Django: Как получить объекты формы (или запроса) в TemplateView - PullRequest
0 голосов
/ 06 февраля 2020

Я создал веб-приложение с Django. По дороге поднялся вопрос, каким образом запросы, получаемые из Formview (и Form), передаются в другие виды, такие как TemplateView. Ниже приведены шаги процесса.

  1. Пользователь вводит значения (запросы) на странице.
  2. Значение запроса НЕ сохраняется ни на одной модели.
  3. Значения запроса вычисляются с использованием алгоритма прогнозирования (своего рода машинного обучения) в app.py
  4. TemplateView получает рассчитанные значения и отображает его

И ниже приведены мои сценарии

form.py

class ValueForm(forms.Form):
value1=forms.Integer(label='value1',
                          widget=forms.TextInput(
                                  attrs={'placeholder':'value1','required':True}))
value2=forms.IntegerField(label='value2',
                          widget=forms.TextInput(
                                  attrs={'placeholder':'value2','required':True}))
value3=forms.Integerield(label='value3',
                          widget=forms.TextInput(
                                  attrs={'placeholder':'value3','required':True}))

def clean(self):
    v1=self.cleaned_data.get('value1')
    v2=self.cleaned_data.get('value2')
    v3=self.cleaned_data.get('value3')

    if v1==None or v2==None or v3==None:
        raise form.ValidationError('Sure the enter of Value')

view.py для ввода значения

class ValueEnterView(FormView):
template_name='mysite/value_enter.html'
form_class=ValueForm
success_url=reverse_lazy('mysite:Prediction') #transfer to PredictionDisplayView

def form_valid (self, form):
    form.clean()
    return super().form_valid(form)

apps.py

def Prediction(v1,v2,v3):
....
....
return predicted_value

view.py для отображения результата прогнозирования

import app

class PredictionDisplayView (TemplateVIew):
template_name='mysite/prediction.html'

def post(self, request):
    # I want to get the requests entered in the ValueEnterView.
    #But the following script does not work
    form=ValueForm(request.POST)
    if form.is_valid():
        v1=form.cleaned_data['value1']
        v2=form.cleaned_data['value2']
        v3=form.cleaned_data['value3']
    return v1,v2,v3

def calculation(self): 
    v1,v2,v3=self.post()
    return Prediction(v1,v2,v3) #function of apps.py

def get_context_data(self,**kwargs):
    context=super().get_context_data(**kwargs)
    prediction_value=self.calculation()
    context['prediction']=prediction_value
    return context

Я думаю, что было бы лучше вызывать проверенные объекты форм (или объекты запросов?) В Templateview, где они передаются алгоритму прогнозирования, но он никогда не работал вообще.

Я надеюсь, что кто-то опытный скажет мне, что не так и как пересмотреть код для получения объектов запроса в Templateview.

Я новичок в создании веб-приложения, извините за наивный вопрос

...