Джанго HttpRequest проблема - PullRequest
       3

Джанго HttpRequest проблема

3 голосов
/ 26 августа 2011

Я пытаюсь получить значение поля формы в django, теперь

xxx = request.POST[u'a1']

дает мне значение, но

xxx = request.POST.get(u'a1')

ничего не дает

что я делаю не так?

Обновление:

При использовании первого метода request.method = POST, при использовании второго метода его значение изменяется на GET,

all Iя делаю замену одной строки кода.

Ingmar, да, это возвращает true.

Шон, первый метод выдает DEBUG: root: [(u'a1 ', u'A1_6')],

второй метод выдает DEBUG: root: []

Ответы [ 2 ]

0 голосов
/ 07 сентября 2011

Немного запутанный вопрос, но, насколько я понимаю, у вас есть запрос, который в какой-то момент содержит QueryDict с данными в request.POST, но на более позднем этапе кода содержит пустой QueryDict: {} в запросе .POST, и вы ищете причину, почему и где данные исчезают.

Документы Django говорят, что QueryDict в HttpRequest является неизменным и не может быть изменен. Поэтому вам, вероятно, не нужно искать код, изменяющий значение запроса. POST QueryDict, но есть код, который заменяет весь запрос. POST QueryDict другим.

Я предполагаю, что вы присваиваете значение 'GET' для request.method в некоторый момент в коде, поскольку вы говорите, что в функции номер два request.method изменяется на GET

При работе с ответом типа PUT некоторое время назад я обнаружил, что django фактически применяет логику к объекту HttpResponse, если response.method изменен, что приводит к изменению request.POST QueryDict.

0 голосов
/ 26 августа 2011

Метод get принимает два параметра: ключ и возвращаемое значение, если ключ не совпадает (по умолчанию None).
Возможно, первый пример работал только в тех случаях, когда форма имела значение в поле ' a1 '.
Либо установите возвращаемое значение для метода get (например, xxx = request.POST.get(u'a1', 'something')), либо заранее проверьте, есть ли у вас это поле в форме (if u'a1' in request.POST ...)

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