Запрос Django.GET

Кажется, я не могу заставить этот пример напечатать "Вы ничего не отправили!". Каждый раз, когда я отправляю пустую форму, она говорит:

Вы отправили: 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>
19
задан MacPython 17 August 2010 в 09:01
поделиться

4 ответа

Вызов / 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!'
34
ответ дан 30 November 2019 в 02:27
поделиться
q = request.GET.get("q", None)
if q:
    message = 'q= %s' % q
else:
    message = 'Empty'
14
ответ дан 30 November 2019 в 02:27
поделиться

, поскольку в вашей форме есть поле с именем 'q', оставив его пустым. отправляет пустую строку.

try

if 'q' in request.GET and request.GET['q'] != "" :
     message
else
     error message
2
ответ дан 30 November 2019 в 02:27
поделиться

В 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
2
ответ дан 30 November 2019 в 02:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: