DJango — обрабатывает ошибки form_invalid с данными, отправленными ajax

#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?