如何使用CreateView Django在模板中显示验证错误



我正在使用扩展的User模型和通用的CreateView。

class SignUp(CreateView):
form_class = forms.SignUpForm
success_url = '/accounts/login/'
template_name = 'accounts/signup.html'

我如何访问表单验证错误在我的模板?它们一定在那里,因为当我做{{表单时。As_p}}出现错误。我试过{{形式。错误}}和{{字段。错误}}但是里面什么都没有。是否有一个简单的标签,我可以调用我的模板来显示错误?谢谢。

如果您喜欢,可以手动操作。每个字段都可以使用{{form.name_of_field}}作为表单的一个属性,并且在Django模板中会被恰当地呈现。例如:

{{ form.non_field_errors }}
<div class="fieldWrapper">
{{ form.subject.errors }}
<label for="{{ form.subject.id_for_label }}">Email subject:</label>
{{ form.subject }}
</div>
<div class="fieldWrapper">
{{ form.message.errors }}
<label for="{{ form.message.id_for_label }}">Your message:</label>
{{ form.message }}
</div>
<div class="fieldWrapper">
{{ form.sender.errors }}
<label for="{{ form.sender.id_for_label }}">Your email address:</label>
{{ form.sender }}
</div>
<div class="fieldWrapper">
{{ form.cc_myself.errors }}
<label for="{{ form.cc_myself.id_for_label }}">CC yourself?</label>
{{ form.cc_myself }}
</div>

,如果你想在首页循环所有错误一次。

{% if form.non_field_errors %}
<ul>
{% for error in form.non_field_errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}

如果你对每个表单字段使用相同的HTML,你可以通过使用{% for %}循环依次遍历每个字段来减少重复代码:

{% for field in form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }} {{ field }}
{% if field.help_text %}
<p class="help">{{ field.help_text|safe }}</p>
{% endif %}
</div>
{% endfor %}

你可以在下面的URL中查看Django文档中的许多方法https://docs.djangoproject.com/en/4.0/topics/forms/looping-over-the-form-s-fields

相关内容

  • 没有找到相关文章

最新更新