9

所以我试图完成一些非常简单的事情。我想在我的搜索框中输入一个术语,并将其显示在结果页面上。

我的表单 HTML 是

<form method="get" action="/results/" class="navbar-form pull-right">
<input type="text" id="searchBox" class="input-medium search-query" name="q" placeholder="Search">
<input type="submit" class="btn" value="Search" >
</form>

views.py 看起来像这样:

def search(request):
    query = request.GET['q']
    t = loader.get_template('template/results.html')
    c = Context({ 'query': query,})
    return HttpResponse(t.render(c))

最后结果模板包含:

<div>You searched for: {{ query }} </div>

这是 urls.py

urlpatterns = patterns('',
url(r'^home/$', 'search.views.home'),
url(r'^results/$', 'search.views.results'),

空间中什么也没有出现{{ query }}

4

1 回答 1

8

好的,所以处理您的搜索的操作views.py应该是,search但正如我怀疑的那样,您urls.py不会在search任何地方调用该方法。

你在哪里执行search方法?

网址应该是这样的:

urlpatterns = patterns('',
url(r'^home/$', 'search.views.home'),
url(r'^results/$', 'search.views.search'),
# or at least have a url for the search view

注意表单中的 action 属性

它是action="/results/"。这意味着结果视图是应该处理表单的人。您也可以将其更改为action="/search/"并使您的网址如下所示:

urlpatterns = patterns('',
url(r'^home/$', 'search.views.home'),
url(r'^results/$', 'search.views.results'),
url(r'^search/$', 'search.views.search'),
于 2013-06-03T19:36:14.943 回答