如何在django的modelviewset中取消设置csrf

如何在django-rest-framework的modelviewset中取消设置csrf?

我将使用django-rest-framework的viewsets.ModelViewSet(http://django-rest-framework.org/api-guide/viewsets.html#modelviewset)。

而我的应用程序是api服务器。 所以我不需要使用csrf。

但我不知道如何取消设置csrf。

请给我一个例子!


只有在使用SessionAuthentication时,CSRF才会执行。 如果您正在使用其他形式的身份验证(例如TokenAuthentication),那么它将不是必需的。


您需要将ModelViewSet的调度方法与csrf_exempt一起打包:

from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_exempt

class MyModelViewSet(viewsets.ModelViewSet):
    @method_decorator(csrf_exempt)
    def dispatch(self, *args, **kwargs):
        return super(MyModelViewSet, self).dispatch(*args, **kwargs)

或者你可以通过在urls.py中包装视图来达到同样的效果:

url(r'^snippets/$', csrf_exempt(snippet_list), name='snippet-list'),
url(r'^snippets/(?P<pk>[0-9]+)/$', csrf_exempt(snippet_detail), name='snippet-detail'),

还要确保你的urlpatterns中没有包含api-auth。

链接地址: http://www.djcxy.com/p/75367.html

上一篇: How to unset csrf in modelviewset of django

下一篇: How can I improve this query depending on the explain results