@Romua1d

Обработка ajax в cbv, как?

def form_invalid(self, form):
        if self.request.is_ajax():
            data = {
                'code': 0,
                'message': form.errors

            }
            return JsonResponse(data)
        else:
            response = super(AjaxableResponseMixin, self).form_invalid(form)
            return response

    def form_valid(self, form):
        form.instance.subject = "Заявка перезвонить № " + str(random.randint(1, 999999))
        form.instance.type = "1"

        if form.instance.phone == '':
            if self.request.is_ajax():
                data = {
                    'code': 0,
                    'message': 'Проверьте информацию',
                }
                return JsonResponse(data)
        else:
            response = super(AjaxableResponseMixin, self).form_valid(form)
            if self.request.is_ajax():
                data = {
                    'code': 1,
                    'message': 'Успешно отправлено',
                }
                return JsonResponse(data)
            else:
                return response

Но это не совсем корректно, а как отследить каждую ошибку и вернуть ее в ответе json, чтобы обработать и через js подсветить поле. Кто какие велосипеды делает?
  • Вопрос задан
  • 157 просмотров
Решения вопроса 1
@VadimChin
def ajax_errors(form):
    return {f: e.get_json_data(False) for f, e in
            form.errors.items()}
...
data = ajax_errors(form)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы