Django 如何在任何URL上使用Haystack搜索功能
在Haystack教程中,Haystack是为url定义的: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
(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}