django - 方法PUT - 禁止(CSRF cookie未设置。):

时间:2015-12-16 23:34:38

标签: django cookies csrf-protection django-csrf

方法PUT的函数视图是:

return JsonResponse ({})

使用HttpRequester(fireon的插件)

  

我的CSRF验证失败了。请求中止。

print(request)给出以下结果:

Forbidden (CSRF cookie not set.): /test/src/4213

我不知道该怎么做。你能帮帮我吗?

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^test/src/(\d+)', MyView.as_view(), name='put_'),
]

class MyView(View):
    ....
    def put(self, request, *args, **kwargs):
            print(request)
            return JsonResponse({})

我没有表格,所以我不能包含{%csrf_token%}。我没有html文件。我尝试用HttpRequester(firefox插件)

测试它

2 个答案:

答案 0 :(得分:1)

如果您在表单中提交表单{%csrf_token%}作为隐藏输入,请务必确认。

另外,请检查以确保CsrfViewMiddleware位于settings.py中的MIDDLEWARE_CLASSES

答案 1 :(得分:0)

如果此视图不适用于表单但可以通过某些内容直接访问,则可以使用csrf_exempt装饰器删除csrf检查:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^test/src/(\d+)', csrf_exempt(MyView.as_view()), name='put_'),
]