Форма Django, отправленная с перенаправлениями ajax, формирует действие вместо вызова success - PullRequest
0 голосов
/ 02 сентября 2018

У меня простая форма

class TimeForm(forms.Form):

    time = forms.TimeField()
    date = forms.DateField()

    def clean_date(self):
        time = self.cleaned_data['time']
        date = self.cleaned_data['date']
        date_time = datetime.combine(date, time)
        if datetime.now() > date_time:
            raise ValidationError("datetime error")
        return start_date

с представлением на основе класса

class TimeView(View):
    @staticmethod        
    def post(request):
         form = TimeForm(request.POST)
         if form.is_valid():
             # do something
             json_data = json.dumps({'some_record': value})
         else:
             json_data = json.dumps({'errors': form.errors})
         return HttpResponse(json_data, content_type='application/json')

В html у меня есть стандартная форма с отправленным подключенным do ajax

<form action="/time_url/" method="POST" id="time_form">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Submit">
</form>

<script>
$('#time_form').submit(function(event) {
    event.preventDefault();
    $.ajax({
        type: "POST",
        url: '/time_url/',
        dataType: 'json',
        data: $(this).serialize(),
        success: function(data, textStatus, jqXHR){
            alert('yay');
        }
    })
});
</script>

и я хотел бы иметь возможность отправить эту форму без перезагрузки страницы. Кажется, все работает отлично, но функция успеха ajax не запускается, вместо этого страница перенаправляется в / time_url / с данными json. Не имеет значения, является ли форма действительной или нет, она всегда перенаправлена.

Я пробовал также с

return JsonResponse(form.errors.get_json_data())

вместо

return HttpResponse(json_data, ...)

как предлагается здесь Форма Django отправляется с ajax , но безуспешно.

Я новичок в javascript, но для меня это похоже на проблему с ajax, поскольку надлежащие данные обслуживаются сервером.

Спасибо за любые советы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...