Djangoのpermission_classesが複数ある場合、変数として共通化できる

今回はDjangoのpermission_classesが複数ある場合、変数として共通化できるというお話をしていきます。



Djangoのpermission_classesが複数ある場合、変数として共通化できる

例として、次の複数Permissionを設定したいとします。

これを色々なViewSetに同じように書くのは少し辛いですよね。
そんな時は、下記のように変数としてpermission_classesをまとめて定義することができます。

詳細な説明は省きますが、metaclass=BasePermissionMetaclassを継承することによって、pipeを使った処理がpermissionのORを判定してくれる上、permission_classesによってself.permission_classesをfor分で回してくれるため、そのまま変数として入れることができます。

https://github.com/encode/django-rest-framework/blob/master/rest_framework/permissions.py#L101

https://github.com/encode/django-rest-framework/blob/master/rest_framework/views.py#L278

プログラムの再利用性を高めたいのであればぜひお試しください。

終わりに

今回はDjangoのpermission_classesが複数ある場合、変数として共通化できるというお話をいたしました。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いしております。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。

Youtubeチャンネル開設いたしました。
チャンネル登録者1000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






Django

Posted by ちこ