0

私は 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 つの (哲学的な) 問題は、テンプレートでのビジネス ロジックの使用です。また、私のビューのほとんどはすべてのユーザーに共通ですが、編集可能なものはいくつかあります。

4

1 に答える 1