Django表单:自定义错误列表格式

时间:2010-01-09 22:08:56

标签: django django-forms

python和django的新手。使用表单模块并逐个查看错误(所以不只是将它们转储到顶部)

我注意到this solution能够为错误设置自定义格式,在我的情况下,它是:

<dd class="error">errstr</dd>

或多或少复制提供的示例,我有以下内容:

forms.py (为了我的缘故,我稍微扩展了一下)

class DefinitionErrorList(forms.util.ErrorList):

    def __unicode__(self):    
        return self.view_as_dd()

    def view_as_dd(self):
        if not self: 
            return u'' 

        return u'<dd class="error">%s</dd>' % '<br />'.join([u'<span>%s</span>' % e for e in self])

main.py

from poke.forms import PokeForm, DefinitionErrorList

def create_new(response, useless):

    if response.method == 'POST':
        # They posted something, so collect it (duh)

        f = PokeForm(response.POST, error_class=DefinitionErrorList)

        if f.is_valid():
            cd = f.cleaned_data

模板供参考

<dt>A small message to remind yourself</dt>
{{ form.message.errors }}
<dd>
    <span class="input_border" style="width: 75%;"> {{ form.message }}</span> 
    <span class="tooltip_span">{{ tooltip.message }}</span>
</dd>

问题在于,如果一个字段有错误,它仍然使用默认格式(the),无论我尝试什么,我都无法使用它。我很确定我错过了一些小的或误解了一些指示。

感谢您的帮助,如果我忘记了任何信息,我很抱歉!

编辑:我正在使用Django 1.1,如果这有帮助的话。为了使它(可能)更清晰,错误显示正常,它们看起来并不像我想要的那样。

1 个答案:

答案 0 :(得分:3)

这是一张持久的票。 http://code.djangoproject.com/ticket/6138

最新更新说它已修复。看它是否在行李箱中工作。如果没有,请提交您的错误。如果是,请获取补丁或等待下一个版本。 (虽然我认为最新版本是在最后一次更新票证之后)。