为什么我在使用 superagent 发送 POST 请求时在 django 端收到 GET 请求

Why I am getting a GET request on the django side while sending a POST request with superagent

我正在使用 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 调度程序正在接收 post 请求,然后将其作为获取请求重定向到应用程序视图。 我对 url 匹配没有任何问题。执行进入查看代码,但它是一个获取请求而不是post,这就是为什么我无法获取我发送的post数据的原因。

这是我的查看代码:

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

从此post, I figured out that I have to attach a csrftoken to my post request, and of course I did this as it is described here没有任何成功。

所以,我的问题是,为什么要这样做,我怎样才能让它不触及我的 post 请求?

P.S。它可以毫无问题地使用 get 请求。

Mounir 似乎走在了正确的轨道上。但是尾随 / 似乎不是问题所在。相反,Django 在请求的 URL 前面添加了一个 /ruru 可能是您在 url 中编码的语言的描述符吗?如果是这样,请尝试调用 request.post('/ru/nameofview/').

另一方面,superagent 似乎使用 GET 请求而不是 POST 来调用重定向,因此 Mounir 提出的 allow_redirects=True 函数也可以解决问题,不过我不熟悉那个图书馆。