如何在 django-rest-framework 的模型视图集中取消设置 csrf?
我将使用 django-rest-framework 的 viewsets.ModelViewSet( http://django-rest-framework.org/api-guide/viewsets.html#modelviewset )。
我的应用程序是 api 服务器。所以我不需要使用csrf。
但我不知道如何取消设置 csrf。
请给我一个例子!
如何在 django-rest-framework 的模型视图集中取消设置 csrf?
我将使用 django-rest-framework 的 viewsets.ModelViewSet( http://django-rest-framework.org/api-guide/viewsets.html#modelviewset )。
我的应用程序是 api 服务器。所以我不需要使用csrf。
但我不知道如何取消设置 csrf。
请给我一个例子!
仅当您使用 SessionAuthentication 时才强制执行 CSRF。如果您使用的是另一种形式的身份验证(例如 TokenAuthentication),则不需要。
您需要用csrf_exempt包装 ModelViewSet 的调度方法:
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。