В настоящее время я пытаюсь динамически загрузить график на моем сайте, используя graphjs.Что я хочу сделать, это обновить данные, выбрав временной диапазон или определенный тип данных.Я хочу, чтобы он был более гибким и имел только два взгляда;один для рендеринга графика, а другой для возврата соответствующих данных.Я думаю, что мой виджет даты будет передавать данные через HomeView с помощью метода post.Как передать информацию о дате в GenericDataView?Или, может быть, есть другой способ сделать это.
РЕДАКТИРОВАТЬ :
class HomeView(View):
def get(self,request,*args,**kwargs):
return render(request,'charts/charts.html')
class GenericDataView(APIView):
def get(self,request,*args,**kwargs):
selected_data = getDataFromTimeRange()
if selected_data is not None:
return Response(selected_data)
if request.method == 'POST':
form = DatePickerCustom(request.POST)
if form.is_valid():
mydate = form.cleaned_data('production_day')
print("DATE: ", mydate)
else:
form = DatePickerCustom()
def getDataFromTimeRange():
// do things
return data;
In forms.py:
dateCustomInput = DateInput(attrs={'class':'datepicker'})
class DatePickerCustom(Form):
production_day = DateField(label='Production day',widget=dateCustomInput)
И в чартах.hmtl:
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
console.log(xhr)
console.log(csrftoken)
xhr.setRequestHeader("X-CSRFToken", csrftoken);
console.log(X-CSRFToken)
}
}
});
<div class="chart-container" url-endpoint='{% url "api-data" %}' style="position: relative">
<canvas id="myChart"></canvas>
</div>
<form action="chart" method="post" enctype='multipart/form-data'>
<!-- {{ csrf_input }}-->
{% csrf_token %}
<label for="date">Choose a date: </label>
<input id="datepicker" type="text" name="selectedDate" value="{{ form }}">
<input type="submit" value="OK">
</form>