Пустой запрос. Пост после обновления до Django 1.3 - PullRequest
1 голос
/ 16 сентября 2011

Следующий код прекрасно работает под Django 1.2, но не работает под Django 1.3, потому что request.POST пуст, хотя данные формы правильно отправляются на сервер

def commit_form(request):
    logging.debug(str(datetime.datetime.now()) + ": commit data " + request.raw_post_data)
    purchase = Purchase.objects.get(transaction_id=request.POST['TransactionID']) #breaks here, request.POST is empty

    #other stuff...

    return HttpResponse("GOOD", mimetype="text/plain") 

Почему это не работает, я могуздесь нет ошибки?

Ответы [ 3 ]

2 голосов
/ 02 ноября 2011

У меня была похожая проблема (пустой request.POST) с django 1.3, но это было из-за ошибки в моем HTML.

У меня была форма с action="foo", но мой urls.py отображен "foo / "к представлению (где я ожидал некоторые данные POST и не получил ни одного).Django любезно перенаправляет запросы на «foo» на «foo /», но данные POST не передаются на «foo /» как часть сделки.Оглядываясь назад, это кажется довольно разумным.Изменение моей формы (на action="foo/") исправило ее, я полагаю, что изменение urls.py тоже могло бы сработать.

1 голос
/ 10 апреля 2013

Также проверьте заголовок вашего типа контента.

Например.

'CONTENT_TYPE': 'application/x-www-form-urlencoded'

Более ранние версии были более удобными, если этот заголовок отсутствовал или был недействительным.

1 голос
/ 16 сентября 2011

Я помню, что у меня были проблемы подобного рода, оказалось, что доступ к request.raw_post_data препятствовал тому, чтобы в дальнейшем request.POST dict заполнялся постпараметрами.Что произойдет, если вы удалите строку logging.debug?

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