我想将一个搜索框集成到每个页面顶部的导航栏中(嘿,在这个 StackOverflow 页面的顶部有一个我正在谈论的例子)。
也许 nav.html 可能看起来像:
<ul id="menu">
<li><a href="/products"></li>
<li><a href="/service"></li>
<li>{{ nav_search_form.as_p }}</li>
</ul>
也许 forms.py 可能包含:
class NavSearchForm(forms.Form):
query = forms.CharField(max_length=30, required=False)
使用 DRY 原则,我不希望 views.py 在每个页面上都查找“查询”,例如:
def ProductsPage(request):
search_form = NavSearchForm()
if request.GET.has_key('query'):
query = request.GET['query'].strip()
# deal with 'Products' here...
def ServicePage(request):
search_form = NavSearchForm()
if request.GET.has_key('query'):
query = request.GET['query'].strip()
# deal with 'Service' here...
我有并且可以轻松地编写一个页面来处理搜索查询并显示结果。您如何最好地提取搜索词并将用户引导到该搜索页面(返回 HttpResponseRedirect('/results/?query=' + query))而不剥离每个页面上的 request.GET?