私は django にアクセス許可システムを実装しましたが、これは非常に基本的なものであり、より良い方法があると思います。
私の理解では、許可は特定のユーザーに付けられるラベルであり、どのアクションをユーザーに関連付けるかは私次第です。たとえば、can_edit
特定のユーザーが実行できるアクションの名前にすぎません。これは後で私が決定します。
コマンドラインを使用しcan_edit
て、特定のモデルに対する権限を作成しましたが、
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.models import Group, User, Permission
itmod_ct = ContentType.objects.get(app_label='myapp', model='mymodel')
can_modify = Permission(name='Can Modify', codename='can_modify_model', content_type=itmod_ct)
can_modify.save()
#some group of users g
g.permissions = (can_modify,)
g.save()
次に、テンプレートで、関連する機能を
{% if perms.myapp.can_modify_model %}
... action that can be performed
{% endif %}
このアプローチの主な問題は、将来 API を実装すると仮定することです。つまり、同じアクションを実行するがそのテンプレートを使用しないものである場合、アプリはすべてとして実装されたアクセス許可/承認がないかのようになります。もう 1 つの (哲学的な) 問題は、テンプレートでのビジネス ロジックの使用です。また、私のビューのほとんどはすべてのユーザーに共通ですが、編集可能なものはいくつかあります。