python - 如何使用 Ajax 渲染 django-crispy-forms 的验证错误?
问题描述
我想用 ajax 显示 Django 默认表单错误。如果有一些错误,这里的代码应该显示 django-crispy-forms 的验证错误。但我不能那样做。应该添加什么后记?
视图.py;</p>
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;
<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>
*表单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>
解决方案
您可以从官方文档中找到有关如何在 AJAX 响应中仅呈现表单的信息。它将在那里包含表单、输入值和表单错误。
推荐阅读
- sql - 如何使用外键获取表的多个值?
- javascript - 如何在不同的屏幕尺寸上获得相同的 scrollY 高度数?
- scala - 什么是 ev.R 型?
- excel - 不仅通过值更改(还有颜色等...)刷新 VBA 函数
- amazon-web-services - 我可以将 gamelift 与 node.js 服务器一起使用吗?
- function - BE_HTTP_GET_File 返回文本
- docker - docker-compose:记录到持久文件
- swift - Xcode / 斯威夫特 | 单击或键入 UITextField 时,按钮会变回原来的位置
- javascript - NodeJS 读取多个文件阻塞并返回快速响应
- spring - 路径变量或请求参数?