Django:模板中存在Crispy表单验证错误
我正在使用Django:模板中存在Crispy表单验证错误,django,django-forms,django-templates,django-crispy-forms,django-validation,Django,Django Forms,Django Templates,Django Crispy Forms,Django Validation,我正在使用django crispy forms来处理渲染良好的表单。 对于我的一个表单,我必须进行一些自定义调整,现在想知道如何正确地验证不属于特定字段但属于整个表单的错误 具体而言,我的表单包含开始和结束日期: #forms.py 类PlotForm(forms.Form): start_date=forms.DateField(initial=last_month,widget=forms.widgets.DateInput(attrs={'type':'date'})) end_date
django crispy forms
来处理渲染良好的表单。
对于我的一个表单,我必须进行一些自定义调整,现在想知道如何正确地验证不属于特定字段但属于整个表单的错误
具体而言,我的表单包含开始和结束日期:
#forms.py
类PlotForm(forms.Form):
start_date=forms.DateField(initial=last_month,widget=forms.widgets.DateInput(attrs={'type':'date'}))
end_date=forms.DateField(initial=datetime.date.today,widget=forms.widgets.DateInput(attrs={'type':'date'}))
def清洁(自清洁):
cleaned_data=super().clean()
开始日期=已清理的数据。获取('开始日期')
结束日期=已清理的数据。获取('结束日期')
如果开始日期>结束日期:
raise forms.ValidationError(“开始日期不能早于结束日期”)
返回开始日期
要检查结束日期是否早于开始日期,我使用clean(self)
但是,永远不会显示错误
{%csrf_令牌%}
{{form.start_date}as_crispy_field}
{{form.end|u date{as_crispy_field}}
提交
我可以通过添加{{form.errors}}
来解决这个问题,但这看起来非常难看。是否有任何简单的方法可以使用crispy
很好地呈现表单相关的验证错误?
与字段相关的错误显示得很好。您可以使用:
{%csrf_令牌%}
{{form | as_crispy_errors}}
{{form.start_date}as_crispy_field}
{{form.end|u date{as_crispy_field}}
提交
此模板筛选器将:
仅呈现表单错误的方式与django crispy表单
相同
<form method="post">
{% csrf_token %}
{{ form|as_crispy_errors }}
<div class="row">
<div class="col-6">
{{ form.start_date|as_crispy_field }}
</div>
<div class="col-6">
{{ form.end_date|as_crispy_field }}
</div>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>