Кажется, я не могу заставить этот пример напечатать "Вы ничего не отправили!". Каждый раз, когда я отправляю пустую форму, она говорит:
Вы отправили: u ''
вместо:
Вы ничего не отправили!
Где я ошибся?
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>
Вызов / search /
должен привести к сообщению «вы ничего не отправили», но вызов / search /? Q =
, с другой стороны, должен привести к "вы отправили u ''"
Браузеры должны добавить q =
, даже если он пуст, потому что они должны включать все поля, которые являются частью формы. Только если вы выполняете некоторые манипуляции с DOM в Javascript (или настраиваете действие отправки javascript), вы можете получить такое поведение, но только если у пользователя включен javascript. Поэтому вам, вероятно, следует просто проверить наличие непустых строк, например:
if request.GET.get('q'):
message = 'You submitted: %r' % request.GET['q']
else:
message = 'You submitted nothing!'
q = request.GET.get("q", None)
if q:
message = 'q= %s' % q
else:
message = 'Empty'
, поскольку в вашей форме есть поле с именем 'q', оставив его пустым. отправляет пустую строку.
try
if 'q' in request.GET and request.GET['q'] != "" :
message
else
error message
В python принимаются значения None, 0, "" (пустая строка), False Нет.
Итак:
if request.GET['q']: // true if q contains anything but not ""
message
else : //// since this returns "" ant this is equals to None
error