在Django的基本模板中使用form_class

时间:2014-10-30 16:13:14

标签: python django django-forms django-templates django-haystack

我使用django-haystack,它有一个视图SearchView和一个表单SearchForm。我在页面SearchForm的{​​{1}}中看到此SearchView,它就像一个魅力。

但我希望在我的所有页面中都有搜索表单。因此,我需要将其放在我的模板/search/中,而不是特定于页面的模板base.html

但是上下文变量search.html仅在我的视图{{ form }}中可用,而不是在所有页面上都可用。

我该如何解决这个问题?我认为上下文处理器或中间件会这样做,但在中间件中这样做似乎有点过分。什么是正常的做法?我想其他许多人在我之前偶然发现了这个问题。

1 个答案:

答案 0 :(得分:1)

最安全的解决方案是使用自定义模板标签 - 最好是包含标记(https://docs.djangoproject.com/en/1.6/howto/custom-template-tags/#inclusion-tags),这样就不会覆盖其他视图的上下文(因为使用'form'作为上下文变量是常见的做法处理表格的观点。)

您可能仍需要滚动自己的搜索视图(基于默认搜索视图),以使整个过程按您的意愿运行...