2017-04-26 32 views
0

我正在使用Django 1.10并试图找到一种方法来检查模板内部窗体的错误代码。所以我尝试了一些东西,比如errors.as_data或errors.as_json,但我无法解析不同的值(除了使用javascript)。它可能是这样的吗?Django检查模板中的表单错误代码

<p>{% for key, value in form.errors.items %} 
        {{ value }} 
        {% if code == 'inactive_account'%} 
         // do some stuff 
        {% endif %} 
       {% endfor %} 
</p> 

但我不知道如何得到这个错误代码。任何建议? PS:我知道解决方案是在视图内部完成它,但由于我使用的是Django已经制作好的一个,所以我宁愿不这样做。

回答

1

字典form.errors不包含ValidationError实例。您需要使用as_data方法。

请注意,您需要遍历每个密钥的错误列表,然后才能检查代码。

{% for key, key_errors in form.errors.as_data.items %} 
    {{ key }} 
    {% for error in key_errors %} 
     {% if error.code == 'inactive_account'%} 
     // do some stuff 
     {% endif %} 
    {% endfor %} 
{% endfor %} 
+0

哦,太好了,谢谢!正是我在找什么。如果我只是问你一个“新手”问题,“form.errors.as_data.items”中的“.items”是什么?它从何而来 ? – Davezedave

+0

'form.errors.as_data()'方法返回一个字典(在Django模板中不包含括号)。然后['items'](https://docs.python.org/3/library/stdtypes.html#dict.items)是所有Python字典的一种方法。我们用它来循环查看字典的键和值。 – Alasdair

+0

非常感谢你!我对编程并不陌生,但对Python非常新颖,所以感谢您告诉我这些概念。 – Davezedave