我正在用Django Rest框架api构建一个Django应用程序。 下面是我构建的一个API。我希望能够从我的浏览器发布数据。我想从我的数据库中检索一个对象模型,它具有URL中给定的匹配主对象。我想根据浏览器发布的数据对检索到的对象进行操作。如果我能用我的ViewSet从中获取发布的数据,我就可以了。但我不知道在我发布POST时如何执行viewset的update()函数。在
从我的网址.py文件:
router.register(r'replyComment', views.ReplyComment, base_name="replyComment")
从我的视图.py文件:
^{pr2}$我正在Chrome浏览器中使用高级Rest客户端(ARC)工具。当我使用POST方法将ARC工具指向http://127.0.0.1:3001/api/replyComment/2/
时,我得到错误:
{
detail: "CSRF Failed: CSRF token missing or incorrect".
}
请参阅屏幕截图here。我的帖子好像做错了什么。有人能告诉我怎么正确地做这件事吗?我怎样才能避开我的CSRF问题?我是Django Rest框架的新手。所以如果你能提供清楚的细节,我将不胜感激。请让我知道我需要做什么样的改变,以确保我的职位工作如我所愿?我需要更多的帮助,而不是简单地让我参考手册。(我试过了,但还是没能成功)
看到有效载荷上方的Headers字段了吗?在
尝试添加以下内容:
我看了屏幕截图,眯起眼睛试图读出你在服务器上设置的CSRF令牌。所以可能是错的,再对照你的设置.py文件。Bibhas是正确的,但是这是如何在浏览器中使用ARC完成POST的。在
Django中需要CSRF令牌来防止CSRF(跨站点请求伪造)。对于写东西的方法(POST、PUT、DELETE等),您需要在请求中包含CSRF令牌,以便Django知道请求来自您自己的站点。在
您可以在Django-rest-framework documentation中阅读更多信息。正如它在doc中所说,您可以找到如何在Django documentation中的HTTP报头中包含CSRF令牌。在
嗯。其他答案是正确的。但我想你的问题是你不知道如何使用这些答案。在
这里有一个例子。假设我想通过
PUT
方法发送一个带有jqueryajax函数的字段name
(更新模型上的名称)。在首先,我们应该从cookies服务器发送给我们的
csrf-token
。来自django documentation的函数执行以下操作(从cookie获取一些值):当我们发送
^{pr2}$put
请求时,我们将在请求头中发送csrf令牌:请注意,在
beforeSend
中,我设置了X-CSRFToken
,因此csrf令牌在请求头中被发送。在当然,您应该更改}。在
url
和{相关问题 更多 >
编程相关推荐