django - "detail": "CSRF Failed: CSRF token missing or incorrect."

标签 django tastypie django-csrf

我正在使用 Tastypie 制作 RESTful API,当我尝试 POST/PUT/DELETE 时一个请求它说:

"detail": "CSRF Failed: CSRF token missing or incorrect.".



它适用于 GET .我已经阅读了关于 SO 的各种主题,说:
  • 删除 cookie
  • 或使用 @csrf_exempt
  • 或使用 @method_decorator(csrf_exempt)

  • 但都没有奏效。

    我怎样才能克服这个错误?

    View .py
    class SnippetList(mixins.ListModelMixin,
                      mixins.CreateModelMixin,
                      generics.GenericAPIView):
        queryset = Snippet.objects.all()
        serializer_class = SnippetSerializer
    
        def get(self, request, *args, **kwargs):
            return self.list(request, *args, **kwargs)
    
    
        def post(self, request, *args, **kwargs):
            request._dont_enforce_csrf_checks = True
            print request.DATA
            return self.create(request, *args, **kwargs)
    

    serializer.py
    from django.forms import widgets
    from rest_framework import serializers
    from snippets.models import Snippet, LANGUAGE_CHOICES, STYLE_CHOICES
    
    
    class SnippetSerializer(serializers.ModelSerializer):
        class Meta:
            model = Snippet
            fields = ('id', 'title', 'code', 'linenos', 'language', 'style')
    

    urls.py
    from django.conf.urls import patterns, url
    from rest_framework.urlpatterns import format_suffix_patterns
    from snippets import views
    
    urlpatterns = patterns('',
        url(r'^snippets/$', views.SnippetList.as_view()),
        url(r'^snippets/(?P<pk>[0-9]+)/$', views.SnippetDetail.as_view()),
    )
    
    urlpatterns = format_suffix_patterns(urlpatterns)
    

    最佳答案

    在 settings.py 中将 rest_framework 默认权限更改为 AllowAny

    REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.AllowAny',),
    ...
    }
    

    关于django - "detail": "CSRF Failed: CSRF token missing or incorrect.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21527369/

    相关文章:

    python - obj_create 无法在 tastypie 中工作

    javascript - 无法从 backbone.js 教程填充 Backbone 集合

    django - Tastypie,为多对多关系添加元素

    django - python-requests 和 django - CSRF 验证失败。请求中止

    python - Django - 403 禁止。 CSRF token 缺失或不正确

    django - 如何从本地主机(http)向django(https)发送POST请求?

    python - django中循环导入错误

    python - django模型版本控制包之间的比较

    html - Font-Awesome CSS 文件不工作,但 Font-Awesome CDN 工作。为什么?

    python - 如何在 Django 中扩展到 'base.html' 模板样式