我有一个名为Users的模型,我有一个名为UsersForm的模型表单。在我的views.py中,我创建了一个UsersForm版本,就像这样
form = UsersForm()
if reqest.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)
现在,我的home_page.html就是这样:
<html>
<body>
<form method="post" action="">{% csrf_token %}
{{ form }}
<input type="submit" value="Register"/>
</form>
{% if form.errors %}
{% for field in form %}
<p> {{field.errors}} </p>
{% endfor %}
{% endif %}
</body>
</html>
所以,我想要的是,我想只显示{{field.errors}}中的第一个错误。 我在想的是:
{% if form.errors %}
{% for field in form %}
<p> {{field.errors}} </p> {{ break}}
{% endfor %}
{% endif %}
但是django模板语言没有中断,对吧?我也尝试过考虑使用{%for form in form | slice:“:1”%},但这也不起作用。有谁知道怎么做?
答案 0 :(得分:4)
您可以使用点表示法在django模板中索引列表:
{{ field.errors.0 }}
请确保在执行此操作之前检查至少有1个错误,否则您将获得索引超出范围错误。
答案 1 :(得分:0)
采用模板标记路线。
以下是示例模板标记:
from django.template.defaulttags import register
@register.filter(name='show_error')
def show_error(dictionary):
try:
return dictionary.values()[0][0]
except (TypeError,IndexError,AttributeError):
return 'tip: try again'
并在模板中使用它:
{% if form.errors %}{{ form.errors|show_error }}</span>{% endif %}