简体   繁体   English

如何使用 Ajax 渲染 django-crispy-forms 的验证错误?

[英]How to rendering validation errors of django-crispy-forms with Ajax?

I want to display Django default form errors with ajax.我想用 ajax 显示 Django 默认表单错误。 Here it codes are supposed to display validation errors of django-crispy-forms if there are some errors.如果有一些错误,这里的代码应该显示 django-crispy-forms 的验证错误。 But I couldn't do that.但我不能那样做。 what should add a postscript to?应该添加什么后记?

Views.py;视图.py;

    if form.is_valid();  
        ~~~~~~
        if self.request.is_ajax():
            return JsonResponse({
                'is_valid': True,
                'redirect':reverse(/.../),
            })
        return redirect(hogehoge)
    else:
        if self.request.is_ajax():
            return JsonResponse({
                'is_valid': False,
                'error':form.errors,
            })

Javascript; Javascript;

<script>
$(function() {
  $(document).on('click', '.submit_button', function (e) {
    var $form = $('.form'); 
    var form = $form[0];
    e.preventDefault();
    $.ajax({
        processData: false,
        contentType: false,
        dataType: 'json',
        url: $form.attr('action'),
        type: $form.attr('method'),
        data: new FormData(form),
        }).done(function(data,textStatus) {
          if (data.is_valid) {
            window.location.href = data.redirect;
            }
            else {
             *Display Django default validation errors if there are error forms.*
            }
      });
    });
  });
</script>

*Form HTML; *表格 HTML;

<form class="form" action="" method="post" enctype="multipart/form-data">
<div class="input">
  {% if field.errors %}
  {% render_field field class+="form-handles is-invalid" %}
  {% for error in field.errors %}
  <div class="invalid-render">
    {{ error|escape }}
  </div>
  {% endfor %}
  {% else %}
  {% render_field field class+="form-handles" %}
  {% endif %}
</div>
  <div class="text-center">
    <button type="submit" class="submit_button">submit</button>
  </div>

</form>

you can find information about how to render only form in AJAX response from official documentation.您可以在官方文档的 AJAX 响应中找到有关如何仅呈现表单的信息。 It will contain form, inputted values and form errors there.它将在那里包含表单、输入值和表单错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM