#python #html #django
Вопрос:
Я пытаюсь передать строку из ввода в моем интерфейсе HTML в файл/функцию python, которая связывается с google API, а затем я хотел бы, чтобы эта информация была выведена обратно на веб-страницу. Прямо сейчас я не могу понять, как заставить эту функцию работать. Или подумай, что я делаю не так.
Вот мой файл представлений
from templates.pyfile.pyapi import Api
from django.shortcuts import render
from django.http import HttpResponseRedirect
from .models import Tube
from templates.pyfile import pyapi
# Create your views here.
def tubeView(request):
search = Tube.objects.all()
return render(request, 'home.html')
def search(request):
kw_list = request.POST['content']
new_search = Tube(content=kw_list)
new_search.save()
print(kw_list)
reApi().main(kw_list)
return HttpResponseRedirect('home/')
Вот мой файл на python
from googleapiclient.discovery import build
from pytrends.request import TrendReq
import matplotlib.pyplot as plt
import pandas as pad
import time
pytrends = TrendReq()
class Api():
def main(x):
self.searchAPI(c)
def searchAPI(self, kw_list):
pytrends.build_payload(kw_list, cat=0, timeframe='today 1-m', geo=country_var, gprop='youtube')
data = pytrends.interest_over_time()
mean = data.mean()
print(mean)
plt.plot(data)
plt.savefig('Plotzz.png')
plt.legend(kw_list, loc='upper left')
Дайте мне знать, если вам понадобятся какие-либо другие файлы.
Ответ №1:
Вы можете получить входные данные в Python
запрос, например, у вас есть поле в вашем HTML
имени q
, как это <input type="text" name="q">
и форма имеют method
значение POST
, и action
ваша Python
функция URL
, как это, <form action="{% url 'myfunc' %}" method="POST">
теперь, когда вы отправляете свою форму, то он отправляет данные приведены URL
в action
значит, должна быть и функция в Python
которой будет получить все сведения об этом
def myfunc(request):
if request.method == "POST":
myquery = request.POST['q']#name of your input tag
@now do what you want to do with it
return HttpResponse({'Success':"Done"})
и определите URL-адрес следующим urls.py
образом
urlpatterns = [
path('myfunc/', myfunc, name="myfunc"),
]
Комментарии:
1. Спасибо вам за это, вопрос тхо, я предполагаю, что myfunc находится внутри views.py папка? Также должен ли я использовать символ @ в функции при обращении к классу? Спасибо
2. да, вы можете написать свою функцию myfunc
views.py
или также создать отдельный файл3. нет, вам не нужно использовать
@
символ внутри функции для ссылки на класс, вы можете инициализировать свой класс такой переменной, как этаa = Myclass()
, а затем получить доступ ко всем атрибутам класса, как этотa.name = "myvalue"