Django自动检测将表单传递给模板

时间:2011-12-01 20:01:32

标签: django django-forms django-templates

过去,我将所有表单命名为form,并在base.html模板中使用{{ form.errors }}来捕获所有错误,

现在我在许多不同的视图中以不同的方式命名了不同的形式但是我想保持这种形式错误捕捉泛型,我如何检测所有传递的形式并迭代它们?

由于

1 个答案:

答案 0 :(得分:1)

除非在上下文中,否则您的模板没有任何内容可用。由于您管理每个视图的上下文,我不确定这里的问题是什么。在视图中命名您的表单无关紧要,您只需将其作为“表单”传递给上下文:

render_to_response('template.html', {
    'form': some_crazy_form_name,
}, context_instance=RequestContext(request))

如果您有一个包含多个表单的视图,您可以简单地提供一个名为“forms”的上下文变量并将其设为列表:

render_to_response('template.html', {
    'forms': [first_form, second_form]
}, context_instance=RequestContext(request))

甚至更好的字典,所以你可以知道哪个形式是:

render_to_response('template.html', {
    'forms': {
        'alpha': first_form,
        'beta': second_form,
    },
}, context_instance=RequestContext(request))

这个想法是,你几乎可以做任何你喜欢的事情。只需按照您的需要设置上下文,然后在模板中使用它。问题出在哪里?