在Django中编写一个非常基本的搜索表单 [英] Writing a very basic search form in Django

查看:487
本文介绍了在Django中编写一个非常基本的搜索表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我试图让事情变得非常简单。我想在我的搜索框中输入一个字词,并将其显示在生成的页面上。



我的表单的HTML是

 < form method = getaction =/ results /class =navbar-form pull-right> 
< input type =textid =searchBoxclass =input-medium search-queryname =qplaceholder =Search>
< input type =submitclass =btnvalue =Search>
< / form>

views.py如下所示:



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

最后,结果模板包含:

 < div>您搜索的是:{{query} }< / div> 

这里是urls.py

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

{{query}} space。

解决方案

views.py 应该是 search ,但正如我在 urls.py 您不要在任何地方调用 search 方法。



您在哪里执行 search 方法?



网址应该是这样的:

  urlpatterns = patterns('',
url(r'^ home / $','search.views.home'),
url(r'^ results / $','search.views.search'),
#或者至少有一个搜索视图的网址

注意表单中的动作属性



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

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


So I'm trying to get something very simple accomplished. I want to enter a term into my search box, and display it on the resulting page.

My HTML for the form is

<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>

The views.py looks like this:

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

And finally the result template contains:

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

Here's the urls.py

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

Nothing is showing up in the {{ query }} space.

解决方案

Ok so the action handling the search in your views.py is supposed to be search but as I suspected in your urls.py you don't call the search method anywhere.

Where do you execute search method?

Urls should be like this:

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

Note the action attribute in your form

It is action="/results/". This means result view is the one who is supposed to be handling the form. You may also change this to action="/search/" and have your urls like this:

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

这篇关于在Django中编写一个非常基本的搜索表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆