Почему я получаю запрос 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
Функция, предложенная Муниром, могла бы также помочь, хотя я не знаком с этой библиотекой.