Ran*_* Ma 2 django get django-forms django-haystack
使用Django Haystack设置搜索页面需要输入他们的URLconf片段url(r'^search/', include('haystack.urls')).但是,这意味着(至少从我对Django/MVC的基本理解),没有简单的方法来传递额外的上下文(即额外的字典键/值)来呈现到页面上.
特别是,我想自定义一个搜索字段来镜像从GET请求传递到页面的变量:
<form method="get" action=".">
<input type="text" name="q" value="">
<!-- result html here -->
</form>
Run Code Online (Sandbox Code Playgroud)
假设参数?q=twitter作为GET请求的一部分附加到URL; 我想让value选择器等于twitter.如果我控制了视图,我可能会这样做:
if request.method == 'GET':
q = request.GET['q']
return render(request, 'template.html', {'q': q})
Run Code Online (Sandbox Code Playgroud)
然后将其q用作valueHTML中选择器的值<input>.
除了编辑Haystack源之外,有没有办法以简单的方式完成这个任务?
您可以将Haystack视图子类化以添加到上下文中:
views.py在您的搜索应用中创建一个文件(如果您没有).然后确保导入Haystack视图.然后你可以像这样创建一个子类:
import haystack.views
class SearchView(haystack.views.SearchView):
"""
We subclass the base haystack view in order to add context.
"""
def extra_context(self):
return {
'yourValue': yourValue,
}
Run Code Online (Sandbox Code Playgroud)
不要忘记urls.py在搜索应用中更改您的视图路径:
from yourSite.apps.search.views import SearchView
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2868 次 |
| 最近记录: |