DJango - обработка ошибок form_invalid с ajax-переданными данными
Я ищу способ сохранить все встроенные функции 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>
...
Затем я получаю все красивые сообщения об ошибках, отображаемые в соответствующих полях и/или в верхней части формы для не_полевых_ошибок и т.д.
Однако, используя следующий 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'>×</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
& как-то обновить страницу с этим? Или мне нужно планировать другой ответ сервера для обычного submit & ajax?