Передать данные из формы выбора даты в APIView - PullRequest
0 голосов
/ 11 декабря 2018

В настоящее время я пытаюсь динамически загрузить график на моем сайте, используя 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>
...