2016-06-09 9 views
1

Ich brauche Hilfe mit einem Problem, das ich gegenüberstelle, wo ich nicht scheinen kann, um das Problem herauszufinden. Im Grunde habe ich eine Suchfunktion, die eine Nachricht "nichts eingegeben!" Zurückgeben soll. wenn der Eintrag leer ist. Es funktioniert jedoch nicht.Leere Suche gibt keinen Fehler in Django

fyi das ist ein Beispiel aus dem Buch masteringDjango - ähnlich, aber nicht 100% identisch. Mein Code unten:

Suchfunktion:

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

Suchformular:

<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'), 
] 

Do lassen Sie mich wissen, wenn mehr Informationen benötigt werden. Ich lerne immer noch jeden Schritt des Weges, vielen Dank im Voraus!

+0

Haben Sie einen Breakpoint versucht, Einstellung oder auf der Suche, was in ist die bekommen? – Sayse

+0

Ja, ich habe und meine Eingabe geht in den Griff. Wenn es leer title = '' ist und es immer noch normal durchläuft .. funktioniert der Vorschlag von Maxime B unten. Danke Sayse! –

Antwort

3

Da Ihr Eingang vom Typ text ist, wird der Eingang title immer gesendet, auch wenn er leer ist. Daher erhalten die Ansicht den Inhalt wie folgt aus:

request.GET['title'] = '' 

Sie haben den Inhalt der Eingabe zu überprüfen, hier ist ein Stück Code:

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

Ich denke, du willst nicht das 'not' vor' request.GET ['title'] ' –

+1

Wow Entschuldigung, habe eine boolesche Verwirrung: D –

+0

es funktioniert danke! Stack Overflow ist genial :) –