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でのシェアOKです。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。






Django

Posted by ちこ