在Haystack教程中,Haystack是为url定义的:
(r'^search/', include('haystack.urls'))
这是否意味着干草堆可用于以/ search / ??
结尾的任何网址如果是这样,我怎么能在/ search /中没有必要结束的任何网址中实现haystack?例如,我想在www.example.com上实施搜索功能,并且不想创建www.example.com/search/
由于
答案 0 :(得分:1)
这意味着,假设这是您的根urls.py,您将获得带有{em>启动且/search/
的任何网址的搜索视图。您可以放置任何要替换的内容r'^search/'
请注意,通常,您的搜索表单显示的网址与实际提供结果的网址存在差异。例如,搜索表单可能位于每个页面上,但搜索结果需要转到您提到的URLconf中的视图。
例如,要在每个页面上放置一个搜索框,您可以在模板中包含搜索表单。它可能是这样的
<form action="/search/" method="get">
{{ mysearchform.as_p }}
<input type="submit" value="Search"/>
</form>
这会将查询发送到绑定到www.example.com/search/
的视图,该视图将是您的结果页面。然后,在您的URLconf中,您只需输入
from haystack.views import SearchView
from haystack.forms import SearchForm
...
url(r'^search/', SearchView(form_class=SearchForm))
要使该表单正常运行(例如,当用户获取结果页面时保留搜索项),您可以创建一个上下文处理器,将该表单返回到所有视图中的上下文:
from haystack.forms import SearchForm
def my_search(request):
form = SearchForm()
return {'mysearchform': form}
请注意,您必须将上下文中的表单命名为form
之外的其他内容,因为它会传递到包含管理界面的每个页面,而form
会与管理员登录表单冲突(即您无法登录)。