Django的新手很抱歉,如果这是微不足道的
我有一个“base.html”模板,该模板由许多其他模板扩展。在这个“base.html”模板中,我有一个从“forms.Form”派生类生成的表单,名为“SearchForm”
。
问题是:我可以将“SearchForm”导入“base.html”模板,而不是将“搜索表单”作为上下文传递给从“base.html”派生的每个视图
答案 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)将表单添加到页面上下文。