0

ユーザーグループが「エキスパート」で作成されていて、Djangoのrest_frameworkもインストールされています。私は私のアイテムとすべてのアイテムのコメントにAPIを介してアクセスすることができます。さて、投稿アクションをコメントに限定する必要があります。このアクションはエキスパートのユーザーが利用できるようになります。アクセス制限apiビューデコレータDjangoからポストメソッド

from .serializers import FeedbackSerializer 
class FeedbackViewSet(viewsets.ModelViewSet): 
      """ 
      API endpoint that allows Items to be viewed or edited. 
      """ 
      queryset = Feedback.objects.all().order_by('user') 
      serializer_class = FeedbackSerializer 
      def create(self, request, *args, **kwargs): 
       self.permission_classes = ['IsAdminUser',] 
       return super(FeedbackViewSet, self).create(self, request, *args, **kwargs) 

私は安らかなAPIに関する公式ドキュメントをチェックしていたが、私は、私は(@api_view('POST'),@permission_classes((IsAdminUser,)))をオーバーライドする方法を理解していない:私は(私は重要なコードを掲載しています)私のviews.pyに次のコードを持っています多分それは次のようになりhttp://www.django-rest-framework.org/api-guide/viewsets:APIを通じて呼び出されるメソッドは、あなたが必要なものをオーバーライドする必要があり、

+0

ビューセットは、複数のアクションを持っているすべてのコメントを表示します単一のPOSTエンドポイントを作成するだけで、不要なViewSetコードのヒープを宣言するのは簡単です。 –

+0

ええと、このクラスの中にFeedbackViewSetの作成メソッドを書くべきですか?それとも私はそれを無効にすることができますか?申し訳ありませんが、これは愚かな質問ですが、私は長男の初心者です – justme

答えて

0
class MyViewset(ModelViewSet): 
    queryset = MyThing.objects.all() 
    serializer_class = MyThingSerializer 

    def update(self, request, pk=None, **kwargs): 
     self.permission_classes = [CustomPermission,] 

     return super(MyViewset, self).update(request, pk, **kwargs) 
+0

あなたの返信ありがとうございます。自分のコードを自分のクラスに挿入し、ユーザーがスタッフに所属しているときに投稿を許可したいので、 "CustomPermission"を "IsAdminUser"に置き換えます。コメントは適切に表示されますが、スタッフ以外のメンバーとのAPIを通じてフィードバックを追加しようとすると、フィードバックが追加されます – justme

+0

また、createメソッドもオーバーライドできます: 'def create(self、request、* args、** kwargs ): ' –

+0

さて、ここでも自分のコードを更新しました。しかし、今私は新しいフィードバックを投稿しようとすると、私は、次のエラーが発生しました: 'AttributeError at/api/comments/'FeedbackViewSet'オブジェクトに属性 'data''がありません – justme