Передача строки из ввода HTML в скрипт python обратно на веб-страницу с помощью Django

#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"