It seems I can’t make this example print "You submitted nothing!".
Every time I submit an empty form it says:
You submitted: u”
instead of:
You submitted nothing!
Where did I go wrong?
views.py
def search(request):
if 'q' in request.GET:
message = 'You submitted: %r' % request.GET['q']
else:
message = 'You submitted nothing!'
return HttpResponse(message)
template:
<html>
<head>
<title> Search </title>
</head>
<body>
<form action="/search/" method="get" >
<input type="text" name = "q">
<input type="submit"value="Search"/>
</form>
</body>
</html>
Calling
/search/should result in “you submitted nothing”, but calling/search/?q=on the other hand should result in “you submitted u””Browsers have to add the
q=even when it’s empty, because they have to include all fields which are part of the form. Only if you do some DOM manipulation in Javascript (or a custom javascript submit action), you might get such a behavior, but only if the user has javascript enabled. So you should probably simply test for non-empty strings, e.g: