Как я могу использовать входные данные из формы с помощью TemplateView - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь создать сайт моделирования, который показывает результаты расчета и график путем ввода цифр.Поскольку мне нужно интегрировать график, созданный plotly, мой views.py выглядит следующим образом:

views.py:

from django.shortcuts import render
from django.contrib.auth.models import User
from django.http.response import HttpResponse
from django.contrib.auth import authenticate, login
from django.shortcuts import redirect
import pandas as pd
from django.views.generic import TemplateView

    from . import plots
    class ScatterView(TemplateView):
        template_name='simulator.html'
        def get_context_data(self, **kwargs):
            context = super(ScatterView, self).get_context_data(**kwargs)
            context['scatter'] = plots.get_scatter()
            return context

График может быть успешно показансейчас, но как я могу использовать ввод данных из формы simulator.html?В Интернете есть много объяснений, но в основном они основаны на функциях, например

if request.method == 'POST':

, но как я могу это сделать на основе классов?

simulator.html:

данные, которые будут использоваться, например, "Century", 2019

<form method='POST' action=''>{% csrf_token %}
    <div class="form-group">
      <label for='input_model_name' class="control-label">Name of Model</label>
      <select name='model_name' placeholder='model_name' class="form-control">
        <option>------</option>
        <option>Century</option>
      </select>
    </div>
    <div class="form-group">
      <label for='input_model_year' class="control-label">Model_Year</label>
      <input type='integer' name='model_year' placeholder="model_year" class="form-control">
    </div>
    <button class="btn btn-secondary" type="submit" name="calculation">calculate</button>
    <p></p>
    <div class="form-group">
  </form>

В конечном итоге я хочу назначить входные данные ниже 'submit_model_name' и 'submit_model_year', чтобы далеерасчет может быть сделан.

plots.py:

import pandas as pd
import os

def get_submit_data():
    submit_model_name = 'Century'  <= how can I assign input data?
    submit_model_year=2015  <= how can I assign input data?
    return submit_model_name, submit_model_year

def get_database():
    model_name = get_submit_data()[0]
    df=pd.read_csv("database1.csv")
    df=df.query("model==@model_name")
    return df

def get_price():
    df=get_database()
    input_model_year=get_submit_data()[1]

urls.py в папке приложения:

from django.urls import path
from .views import signupfunc, loginfunc
from django.conf import settings
from django.conf.urls.static import static
from .views import ScatterView

urlpatterns = [
    path('signup/', signupfunc, name='signup'),
    path('login/', loginfunc, name='login'),
    path('simulator/', ScatterView.as_view(), name='simulator'),
]
...