Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;CSRF失败:CSRF令牌丢失或不正确。”;在Django Rest中:UpdateModelMixin_Django_Django Rest Framework - Fatal编程技术网

&引用;CSRF失败:CSRF令牌丢失或不正确。”;在Django Rest中:UpdateModelMixin

&引用;CSRF失败:CSRF令牌丢失或不正确。”;在Django Rest中:UpdateModelMixin,django,django-rest-framework,Django,Django Rest Framework,我正在使用Django rest框架中的UpdateModelMixin来更新测试模型中的条目 from django.utils.decorators import method_decorator from django.views.decorators.cache import never_cache from rest_framework import mixins, filters, viewsets decorators = [never_cache] @method_decora

我正在使用Django rest框架中的UpdateModelMixin来更新测试模型中的条目

from django.utils.decorators import method_decorator
from django.views.decorators.cache import never_cache
from rest_framework import mixins, filters, viewsets
decorators = [never_cache]

@method_decorator(decorators, name='dispatch')
class TestViewSet(mixins.ListModelMixin,
                     mixins.RetrieveModelMixin,
                     mixins.UpdateModelMixin,
                     viewsets.GenericViewSet):

    queryset = Test.objects.all()
    serializer_class = TestSerializer
    filter_backends = [filters.DjangoFilterBackend]
    filter_class = TestFilter
当我尝试从测试模型更新对象时,它给出了以下错误-

“详细信息”:“CSRF失败:CSRF令牌丢失或不正确。”


有人能帮我解决这个问题吗?

这是一个老问题,但它值得一个答案,因为人们可能会来到这个页面寻找答案

如果存在csrf令牌问题,则表示您正在使用的页面未传递csrf令牌。由于您没有说明如何访问数据,我将假设它是JavaScript,因为这是最有可能的,所以我将给您一个如何修复它的示例,但过程只是从现有cookie中获取csrf令牌,然后将其作为cookie传递给API

下面是一个来自JavaScript的AJAX调用示例,它传递一个csrf令牌:

var data={ foo: "bar" };
$.ajax({
    url: '/api/schedule/',
    type: "PATCH",
    data: JSON.stringify(data),
    beforeSend: function(xhr) {
        xhr.setRequestHeader('X-CSRFToken', Cookies.get('csrftoken'))
    },
    contentType: "application/json",
});
编辑:
这使用了JavaScript cookie库。

这是一个老问题,但它值得一个答案,因为人们可能会来到这个页面寻找答案

如果存在csrf令牌问题,则表示您正在使用的页面未传递csrf令牌。由于您没有说明如何访问数据,我将假设它是JavaScript,因为这是最有可能的,所以我将给您一个如何修复它的示例,但过程只是从现有cookie中获取csrf令牌,然后将其作为cookie传递给API

下面是一个来自JavaScript的AJAX调用示例,它传递一个csrf令牌:

var data={ foo: "bar" };
$.ajax({
    url: '/api/schedule/',
    type: "PATCH",
    data: JSON.stringify(data),
    beforeSend: function(xhr) {
        xhr.setRequestHeader('X-CSRFToken', Cookies.get('csrftoken'))
    },
    contentType: "application/json",
});
编辑:
这使用JavaScript cookie库。

未定义cookie。我完全不懂html。我从哪里买饼干?对不起。我没有提到你必须为这段代码包含JavaScript cookie库,是这样做的。谢谢-Cookies没有定义。我完全不懂html。我从哪里买饼干?对不起。我没有提到你必须为这段代码包含JavaScript cookie库,是这样做的。谢谢-