将forms.form导入模板

时间:2011-10-08 23:52:39

标签: django django-templates

Django的新手很抱歉,如果这是微不足道的

我有一个“base.html”模板,该模板由许多其他模板扩展。在这个“base.html”模板中,我有一个从“forms.Form”派生类生成的表单,名为“SearchForm”
。 问题是:我可以将“SearchForm”导入“base.html”模板,而不是将“搜索表单”作为上下文传递给从“base.html”派生的每个视图

3 个答案:

答案 0 :(得分:2)

Use Django's template context processor

这是一个简单的例子:

def search_form_context_processor(request):
    return {'form': SearchForm() }

然后使用

更新settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
    ....
    my_module.search_form_context_processor,
    ....
)

https://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors

在此之后,{{ form }}将在您使用render_to_response传递的RequestContext呈现的任何模板上提供。

答案 1 :(得分:1)

像Isaac Kelly所写,你可以创建一个模板标签,它将为你的上下文添加表单。文档为here

要在您的上下文中添加表单,您可以编写

class FormNode(template.Node):
    def render(self, context):
        context['form'] = MyForm()
        return ''

def add_form_to_context(parser, token):
    return FormNode()

答案 2 :(得分:0)

其他选项(除了@ Derek)还有一个自定义模板标签,A)写入表单html,或者B)将表单添加到页面上下文。