Почему я получаю запрос GET на стороне django при отправке запроса POST с суперагентом

Я отправляю запрос POST серверу приложения, используя superagent.js. Запрос отправлен django Посмотреть. Но я получаю запрос GET на стороне просмотра.

Вот мой код, где я пытаюсь отправить запрос с superagent:

request.post('/nameofview')
.set('Content-type', 'application/x-www-form-urlencoded')
.set('X-CSRFToken', csrf)
.send({name: 'name'})
.end(callback)

Это журналы с django сервер разработки:

[30/Mar/2016 12:27:28] "POST /nameofview HTTP/1.1" 302 0
[30/Mar/2016 12:27:28] "GET /ru/nameofview HTTP/1.1" 404(<--Raising not found from within the view) 1696

Так, django Диспетчер URL-адресов проекта получает пост-запрос, но затем перенаправляет его в представление приложения как запрос на получение. У меня нет проблем с соответствием URL. Выполнение входит в код представления, но это запрос на получение, а не сообщение, и поэтому я не могу получить отправленные данные.

Это мой вид кода:

def nameofview(request):
    if 'name' in request.POST:
        # make some staff
        return JsonResponse({'result': result})
    else:
        raise Http404()

Из этого поста я понял, что мне нужно прикрепить csrftoken к моему почтовому запросу, и, конечно, я сделал это, как описано здесь, безуспешно.

Итак, мой вопрос: почему он это делает, и как я могу сделать так, чтобы он не касался моего почтового запроса?

PS Работает с запросом get без проблем.

1 ответ

Решение

Мунир, кажется, на правильном пути. Однако трейлинг / не кажется проблемой. Вместо этого Django добавляет /ru в начале запрошенного URL. Мог ru возможно быть дескриптором языка, который вы кодируете в своем URL? Если это так, попробуйте позвонить request.post('/ru/nameofview/'),

С другой стороны, суперагент, кажется, вызывает перенаправления с GET запрос вместо POST Итак allow_redirects=True Функция, предложенная Муниром, могла бы также помочь, хотя я не знаком с этой библиотекой.

Другие вопросы по тегам