2011-05-03 72 views

回答

4

不,它们是完全独立的 - 因为他们应该的,因为消息是django.contrib,因此不能保证启用。

as_p方法一样,显示错误的最佳方式是在表单本身内。我使用模板标签一次性显示每个字段及其相关的错误 - 这是Peter Baumgartner的display_field tag的修改版本。

0

不,不会自动。你将不得不自己处理。

if not form.is_valid(): 
    # loop through form.errors and 
    # convert that in messages.error 
    # where appropriate 
+0

一种痛苦,因为Django注册已经是一个'应用程序',所以我不能真正修改它。关于如何将错误添加到消息框架的任何建议? – dotty 2011-05-03 09:11:35

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']) 
+0

引用格式Steve Mconell:通常情况下,您不希望用户在生产代码中看到断言消息;断言主要用于开发和维护期间。断言通常在开发时编译到代码中,并编译出生产代码。 – radtek 2015-04-15 20:01:06