我想有一个搜索框集成到每个页面顶部出现的导航栏(嘿,这是我在这个StackOverflow页面顶部的那个例子)。Django中的导航栏搜索框的最佳做法是什么?
也许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...
我有和可以轻松地编程一个页面,将处理搜索查询和显示r esults。如何最好地提取搜索条件并将用户引导至该搜索页面(返回HttpResponseRedirect('/ results /?query ='+ query)),而无需在每个页面上剥离request.GET?
相应的调整,如果你正在使用的,而不是一个“静态”的形式提交的Javascript。 – 2009-10-23 01:31:10
+1。如果您愿意,也可以为POST发挥作用。 – 2009-10-23 08:08:28
@Daniel Yep。在搜索的情况下,我更喜欢GET,因为URL可以加书签,通过电子邮件等发送。 – 2009-10-23 12:41:52