9

django-rest-framework の modelviewset で csrf の設定を解除するには?

django-rest-framework のviewsets.ModelViewSet( http://django-rest-framework.org/api-guide/viewsets.html#modelviewset ) を使用します。

そして私のアプリはAPIサーバーです。したがって、csrf を使用する必要はありません。

しかし、csrf の設定を解除する方法がわかりません。

例を教えてください!

4

3 に答える 3

3

CSRF は、SessionAuthentication を使用している場合にのみ適用されます。他の形式の認証 (TokenAuthentication など) を使用している場合は、必要ありません。

于 2013-11-11T11:09:32.697 に答える
2

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'),
于 2013-11-11T08:46:52.590 に答える
0

また、urlpatterns に api-auth が含まれていないことを確認してください。

于 2014-03-04T21:27:12.647 に答える