#django #ajax #forms
Вопрос:
Я ищу способ сохранить все встроенные материалы django для ошибок формы с помощью отправки ajax, которая возвращает «стандартный» ответ django form_invalid (). Например, с запросом, отличным от ajax:
class SomeCreateView(LoginRequiredMixin, SideBarMixin, CreateView):
def form_invalid(self):
return self.render_to_response(self.get_context_data())
А затем в шаблоне:
<div class="container-fluid">
<form action="" method="post" enctype='multipart/form-data'>
{{ form.non_field_errors }}
...
<div class="wide_items">
{{form.no_form.errors}}
{{form.no_form.label_tag}}
{{form.no_form}}
</div>
...
</form>
...
Затем я получаю все приятные сообщения об ошибках, отображаемые в соответствующих полях/или в верхней части формы для non_field_errors и т. Д.
Однако, используя следующий запрос jquery ajax:
some_handler: function (e, clickedBtn) {
// .... some logic to check what to do etc. ....
$.ajax({
url: url,
type: "POST",
data: data,
success: function (response) {
if (response.status==1) { // form_valid() - reload current page, load some other
alert(response.message);
location.reload(true);
if (response.next_url) {
mainjs.open_new_window(response.next_url);
}
} else if (response.status==0) { // form_invalid - how to manage this?
alert(response.message);
}
},
error: function (xhr, errmsg, err) {
$('#results').html("<div class='alert-box alert radius' data-alert>Oops! We have encountered an error: " errmsg
" <a href='#' class='close'>amp;times;</a></div>"); // add the error to the dom
}
});
},
В этом втором случае я хотел бы каким-то образом получить ответ непосредственно с обычного маршрута:
class SomeCreateView(LoginRequiredMixin, SideBarMixin, CreateView):
def form_invalid(self, form, formset):
return self.render_to_response(self.get_context_data())
С моим кодом ajax…. Могу ли я извлечь только html response
-код и каким-то образом обновить страницу с помощью этого? Или мне нужно спланировать другой ответ сервера для обычных отправок и ajax?