如何在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