2016-06-09 51 views
1

我需要一些帮助来解决我正面临的问题,我似乎无法弄清楚问题所在。基本上,我有一个搜索功能,应该返回一个'没有输入!如果条目是空白的。但是,它不起作用。空白搜索不会在Django中返回错误

fyi这是一本书masteringDjango的例子 - 类似但不是100%相同。我下面的代码:

搜索功能

def search(request): 
    if 'title' in request.GET: 
     message = 'You searched for: %r' % request.GET['title'] 
    else: 
     message = 'nothing entered!' 
    return HttpResponse(message) 

搜索表单

<form class="form-inline pull-xs-left" role="search" method="GET" action="/search/"> 
    <input class="form-control" type="text" name="title" placeholder="Search"> 
    <button class="btn btn-success-outline" type="submit">Search</button> 
    </form> 

urls.py

urlpatterns = [ 
... 
url(r'^search/$', views.search, name='search'), 
] 

待办事项让我知道是否需要更多信息。我仍然在学习每一步,非常感谢!

+0

您是否尝试过设置一个断点或找什么是得到? – Sayse

+0

是的,我有我的意见,并进入得到。如果它是空白标题='',并且它仍然正常通过。下面的作品由Maxime B提出。谢谢Sayse! –

回答

3

由于您的输入类型为text,因此即使为空,始终也会发送title输入。因此,您的视图收到这样的内容:

request.GET['title'] = '' 

你必须检查输入的内容,这里的一些代码:

def search(request): 
    if 'title' in request.GET and request.GET['title']: 
     message = 'You searched for: %r' % request.GET['title'] 
    else: 
     message = 'nothing entered!' 
    return HttpResponse(message) 
+0

我想你不希望在'request.GET ['title']前加''不对'' –

+1

对不起,得到了一个布尔混淆:D –

+0

它的作品谢谢!堆栈溢出是真棒:) –