使用Django在我的模板库中显示一个表单

时间:2011-05-29 05:04:48

标签: django django-templates django-forms

在我的基本模板中,我想要包含一个搜索表单。

我已经创建了它,但我想知道是否有更好的选择,而不是将form传递给扩展基础的所有模板?

3 个答案:

答案 0 :(得分:12)

是的,这就是模板上下文处理器的用途。它们允许您将变量传递给所有模板,而无需指定。

<强> settings.py

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.debug',

    ...

    'some_app.context_processors.search_form',
)

context_processors.py (您可以将其放在您的某个应用中,如果您愿意,也可以放在主目录中)

from my_forms import MySearchForm

def search_form(request):
return {
     'search_form' : MySearchForm()
}

现在,您可以在所有模板中使用 {{search_form }}

答案 1 :(得分:1)

你可以把它变成一个返回表单的过滤器,假设它是静态的。它看起来像这样:

<body>
...
{% import_form_template %}
...
</body>

或者那些东西。如果你需要它有点动态,你也可以这样做它需要参数:

{% import_form_template arg1 arg2 arg3 %}

https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-tags

答案 2 :(得分:0)

为什么不使用自定义context processor