gpt4 book ai didi

Django 表单错误消息未显示

转载 作者:行者123 更新时间:2023-12-02 09:32:51 25 4
gpt4 key购买 nike

所以我有我的看法:

def home_page(request):
form = UsersForm()
if request.method == "POST":
form = UsersForm(request.POST)

if form.is_valid():
form.save()
c = {}
c.update(csrf(request))
c.update({'form':form})
return render_to_response('home_page.html', c)

我的forms.py:

class UsersForm(forms.ModelForm):

class Meta:
model = Users
widgets = {'password':forms.PasswordInput()}

def __init__(self, *args, **kwargs):
super( UsersForm, self ).__init__(*args, **kwargs)
self.fields[ 'first_name' ].widget.attrs[ 'placeholder' ]="First Name"
self.fields[ 'last_name' ].widget.attrs[ 'placeholder' ]="Last Name"
self.fields[ 'password' ].widget.attrs[ 'placeholder' ]="Password"

和我的模板:

<html>
<body>

<form method="post" action="">{% csrf_token %}
{{ form.first_name }} {{form.last_name }} <br>
{{ form.password }} <br>
<input type="submit" value="Submit Form"/>
</form>

{% if form.errors %}
{% for field in form %}
{% for error in field.errors %}
<p> {{ errors }} </p>
{% endfor %}
{% endfor %}
{% for error in form.non_field_errors %}
<p> {{ error }} </p>
{% endfor %}
{% endif %}

</body>
</html>

现在,请记住,在拆分表单字段之前,我的表单如下所示:

    <form method="post" action="">{% csrf_token %}
{{ form }}
<input type="submit" value="Submit Form"/>
</form>

如果表单出现问题(例如缺少其中一个字段),它会自动给出错误消息。当我拆分模板中的表单字段(将 {{ form.first_name }}、{{ form.last_name }} 和 {{ form.password }} 作为自己的部分)后,它停止自动给出错误消息。这是正常的吗?

但主要问题是,如果有错误消息,为什么我的 {{ if form.errors }} 语句不起作用/显示错误消息?例如,如果我故意不填写表单中的字段并单击“提交”,则数据库不会获得更新(这是一件好事),但不会给出任何错误消息。知道为什么吗?

我还尝试删除 {{ forms.non_field_errors }} 并尝试仅返回字段错误,如下所示:

    {% if form.errors %}
{% for field in form %}
{% for error in field.errors %}
<p> {{ errors }} </p>
{% endfor %}
{% endfor %}
{% endif %}

但是还是不行。

最佳答案

我发现了错误(打字错误)。

代码片段应该是:

{% if form.errors %}
{% for field in form %}
{% for error in field.errors %}
<p> {{ error }} </p>
{% endfor %}
{% endfor %}
{% endif %}

我遇到了错误,而不是错误

关于Django 表单错误消息未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18946746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com