Djangoでは、ユーザーの権限はモデルで管理?
Djangoでは、ユーザーの権限はモデルを使用して管理されます。権限は django.contrib.auth.models.Permission モデルを通じて定義され、これはDjangoの組み込みモデルの一部です。モデルはデータベース内の auth_permission テーブルに格納されます。
特定の権限を定義する手順は以下の通りです:
Permissionモデルの操作:
Djangoの管理者サイトやデータベースマイグレーションを介して、Permissionモデルを操作できます。- 管理者サイトを使用する場合:
- 管理者サイト (
/admin) にログインします。 Authentication and Authorizationセクションに移動し、Permissionsを選択します。Add Permissionボタンをクリックして新しい権限を追加します。
- 管理者サイト (
- データベースマイグレーションを使用する場合:
models.pyファイル内でPermissionモデルを import します。- 必要な権限をモデル内で定義します。
makemigrationsおよびmigrateコマンドを使用してデータベースにマイグレーションを適用します。
python # models.py from django.db import models from django.contrib.auth.models import Permission class YourModel(models.Model): # このモデルのフィールドを定義 # カスタム権限を作成 content_type = ContentType.objects.get_for_model(YourModel) permission = Permission.objects.create( codename='can_access_your_feature', name='Can Access Your Feature', content_type=content_type, )ここで
can_access_your_featureは権限の識別子 (codename) であり、適切な名前やモデルに合わせて変更できます。- 管理者サイトを使用する場合:
@user_passes_testデコレータで権限を確認:
先ほど作成した権限を使用して@user_passes_testデコレータで権限を確認します。python # views.py from django.contrib.auth.decorators import user_passes_test from django.shortcuts import render def has_access_your_feature(user): # ユーザーが特定の権限を持っているかどうかを確認 return user.has_perm('your_app.can_access_your_feature') @user_passes_test(has_access_your_feature) def your_protected_view(request): # ここに権限が必要な処理を追加 return render(request, 'protected_view.html')上記の例では、
has_access_your_feature関数が特定の権限を持っているかどうかを確認しています。

ディスカッション
コメント一覧
まだ、コメントがありません