Django 如何在任何URL上使用Haystack搜索功能

Django 如何在任何URL上使用Haystack搜索功能,django,django-haystack,Django,Django Haystack,在Haystack教程中,Haystack是为url定义的: (r'^search/', include('haystack.urls')) 这是否意味着haystack可用于任何以/search/?结尾的url 如果是这样,我如何在任何不必以/search/结尾的url中实现haystack?例如,我想在www.example.com上实现搜索功能,但不想创建www.example.com/search/ 谢谢这意味着,假设这是您的根URL.py,您将获得带有任何以/search/开头的UR

在Haystack教程中,Haystack是为url定义的:

(r'^search/', include('haystack.urls'))
这是否意味着haystack可用于任何以/search/?结尾的url

如果是这样,我如何在任何不必以/search/结尾的url中实现haystack?例如,我想在www.example.com上实现搜索功能,但不想创建www.example.com/search/


谢谢

这意味着,假设这是您的根URL.py,您将获得带有任何以
/search/
开头的URL的搜索视图。您可以放置任何要替换的内容
r'^search/'

请注意,一般来说,搜索表单出现的URL与实际提供搜索结果的URL有所不同。例如,搜索表单可以位于每个页面上,但搜索结果需要转到您提到的URLconf中的视图

例如,在模板中包含搜索表单的每个页面上都放置一个搜索框。可能是这样的

<form action="/search/" method="get">
{{ mysearchform.as_p }}
<input type="submit" value="Search"/>
</form>
要使该表单正常运行(例如,当用户获得结果页时,让它保留搜索词),您可以创建一个上下文处理器,将该表单返回到所有视图中的上下文:

from haystack.forms import SearchForm

def my_search(request):
    form = SearchForm()
    return {'mysearchform': form}
请注意,您必须在上下文中将表单命名为
表单
以外的名称,因为它会传递到包括管理员界面在内的每个页面,并且
表单
将与管理员登录表单冲突(即,您将无法登录)

from haystack.forms import SearchForm

def my_search(request):
    form = SearchForm()
    return {'mysearchform': form}