我正在使用superagent.js向服务器应用程序发送POST请求。该请求将发送到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调度程序正在接收发布请求,但随后将其重定向到应用程序视图作为get请求。 我对网址匹配没有任何问题。执行进入视图代码,但这是一个获取请求而不是帖子,这就是为什么我无法获取我发送的帖子数据。
这是我的观看代码:
def nameofview(request):
if 'name' in request.POST:
# make some staff
return JsonResponse({'result': result})
else:
raise Http404()
从这个post,我发现我必须在我的帖子请求中附加一个csrftoken,当然我这样做是因为here描述没有任何成功。
所以,我的问题是,为什么要这样做,如何让它不触及我的帖子请求?
P.S。它可以毫无问题地使用get请求。
答案 0 :(得分:0)
Mounir似乎走在了正确的轨道上。然而,尾随/
似乎不是问题。相反,Django正在所请求的URL的前面添加/ru
。 ru
可能是您在网址中编码的语言的描述符吗?如果是,请尝试拨打request.post('/ru/nameofview/')
。
另一方面,superagent似乎用GET
请求而不是POST
来调用重定向,因此Mounir提出的allow_redirects=True
函数也可以做到这一点,尽管我是不熟悉那个图书馆。