Проверка содержимого в запросе Django.POST - PullRequest
2 голосов
/ 17 ноября 2009

Я принимаю данные через запрос. Почтовый ящик выглядит так:

if request.method == 'POST': 
    l = Location() 
    data = l.getGeoPoints(request.POST) 
    appid = settings.GOOGLE_API_KEY 

    return render_to_response('map.html',  
                               {'data': data, 'appid': appid}, 
                               context_instance=RequestContext(request)) 

Он принимает данные из набора текстовых полей ввода, называемых form-0-location вплоть до form-5-location .

Я хочу добавить проверку, чтобы убедиться, что request.POST содержит данные в любом из этих полей ввода. Я думаю, что моя проблема в том, что я не знаю правильной терминологии для описания этого в Django.

Я знаю, как это сделать в PHP: загляните в $ _POST, чтобы хотя бы одно из этих полей не было пустым, но я не могу найти правильный ответ через поиск в Google.

Если я не найду никаких данных в этих полях ввода, я хочу перенаправить пользователя обратно на главную страницу.

Ответы [ 6 ]

8 голосов
/ 17 ноября 2009

Задумывались ли вы об использовании форм Джанго ?? Вы можете пометить поля как «обязательные» при определении формы, и Django позаботится о проверке, если в указанных полях есть данные при отправке. Они также делают другие виды проверки.

4 голосов
/ 17 ноября 2009
if request.method == 'POST' and request.POST:
       # Process request

request.POST будет ложным, если запрос не содержит никаких данных.

3 голосов
/ 17 ноября 2009

С объектами запроса Django данные POST хранятся как словарь, поэтому, если вы знаете ключи в словаре, вы можете найти их и проверить, являются ли они пустыми или нет. Проверьте эти две ссылки для более подробной информации:

http://docs.djangoproject.com/en/dev/ref/request-response/#attributes http://docs.djangoproject.com/en/dev/ref/request-response/#querydict-objects

И, например, когда у вас есть объект запроса, и вы знаете, что у вас есть ключ / var с именем 'form-0-location', вы можете сделать:

if request.POST.get('form-0-location'):
    print 'field is not None >> %s' % request.POST.get('form-0-location'')
0 голосов
/ 03 июня 2014

Вы также можете попробовать попробовать что-то вроде

if len(request.POST['data'])<1:
    do something if empty
else:
    do something if has data
0 голосов
/ 02 октября 2012

request.POST возвращает тип QueryDict (который расширяет суперкласс Dictionary).

Это означает, что вы можете перебирать ключи в этом словаре (все параметры в POST) и возвращать false, когда вы видите пустое значение

(для ввода request.POST):

if key k has invalid value (i.e. None or something else):
   return false
return true
0 голосов
/ 17 ноября 2009

Второе предложение использовать формы Django. Почему бы не использовать Django Forms, когда вы используете Django?

Создайте быструю форму, которая соответствует полям, которые у вас есть на странице. Загрузите форму с данными request.POST и используйте form.is_valid(), чтобы определить, является ли форма действительной или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...