Я пытаюсь создать сайт моделирования, который показывает результаты расчета и график путем ввода цифр.Поскольку мне нужно интегрировать график, созданный 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'),
]