2016-09-06 5 views
0

私はdjango-rest-frameworkを使用しており、非常に簡単なpost CRUD APIを実装しています。django-rest-framwork UpdateView、DeleteViewがcsrfトークンエラーが発生しましたか?

しかし、問題はUpdateViewあると​​

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

csrfエラーが発生した奇妙なことがCreateView doens'tはcsrfを必要とし、非常にうまく機能しています。ここで

は、私は、これはソースコードのために十分だと思う私のviewserializer

views.py

​​

serializer.py

class PostUpdateSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Post 
     fields = [ 
      "title", 
      "content", 
     ] 

です。クリックされたPUTボタンの後

enter image description here

、私はAPIでcsrfに対処するにはどうすればよい

enter image description here

  • 私が使用したいソリューションのRest-framework

答えて

0

一つについて設定を触れていない強制的にミドルウェアレベルでこれを行うにはDjangoを指示することにより、CSRFのチェックのいずれかとすべての種類を削除することです。

これを行うには、CSRFチェックを無効にするコードを含む新しいミドルウェアクラスを作成し、実行するミドルウェアの既存のリストにミドルウェアを追加します。 Djangoで使用されているデフォルトの認証ミドルウェア(設定上のミドルウェアの順序)の後にカスタムミドルウェアを追加してください。

class CSRFDisablerMiddleware(object): 

    def process_request(self, request): 
     setattr(request, '_dont_enforce_csrf_checks', True) 

私のアプリは認証の他の手段を使用して保護されているので、私は無事にこの方法を使用を注意してください。プロジェクトでCSRF認証が特定の領域で必要であり、他の領域では必要ない場合、この問題を解決する方法についてはわかりません。上記の方法は、Djangoプロジェクト全体のCSRF認証を無効にします。

関連する問題