Django的表单框架是否使用Django消息框架?
我正在使用django-registration,并开始了解Django的表单框架。我一直在用.to_p()这个方法来显示表单,但我想要更好的方式来展示表单数据,所以我在研究这个表单框架。
表单框架传递的错误信息会传递到Django的消息框架吗?
相关问题:
- Django - 装饰器和错误消息
- Python + Django 导入错误:无法从Python2.5导入signals到Python2.7
- 在运行manage.py test时django.contrib.messages.tests中的虚假失败
- 如何在Python & Django web应用中删除数据库值而不影响报告
- 在Django Rest Framework中为新注册用户创建认证令牌时出错
- Django: FieldError: 无法将关键字'name'解析为字段。可选项有: Name, id
- Django中找不到文件或目录:'/tmp/tmp_ejr26m6.upload.mp3
- 在Django中使用SMTP发送邮件
3 个回答
0
不,不会自动处理。你需要自己来处理这个问题。
if not form.is_valid():
# loop through form.errors and
# convert that in messages.error
# where appropriate
2
每个表单的字段都有自己的错误信息,这些信息保存在一个字典里……所以
class MyForm(Form):
myfield = CharField()
nullfield = CharField(blank=True)
在你进行验证的步骤之后,如果发现了一些表单错误,它们都会被存储在错误字典里,因此,
form = MyForm(request.GET)
if form.is_valid():
...
else:
# assert form errors
assert 0, form.errors
错误字典的样子会是这样的
{'myfield': [u'This field is required.']}
所以,每个错误都会被添加到错误字典中。你可以查看这个字典,并创建一个统一的错误信息,或者在你的视图中做其他任何你想做的事情。或者在模板中,你可以用
{%for err in form.errors%}
........
{%endfor %}
正如你所看到的,这里没有提到django消息应用……如果你真的想把这些错误信息传递给django消息应用,你可以尝试
for error in form.errors:
request.user.message_set.create(message=form.errors['error'])
4
不,它们是完全独立的——这也是应该的,因为消息功能在 django.contrib 里,所以不能保证它一定会被启用。
显示错误的最佳方式是在表单内部,就像 as_p 方法那样。我使用一个模板标签来一次性显示每个字段及其相关的错误——这是对彼得·鲍姆加特纳的 display_field 标签 的修改版本。