Djangoのパーミッション管理モジュールを設定する方法

Djangoでは、組み込みのパーミッション管理モジュールを使用してパーミッションを設定できます。

はじめに、settings.pyファイルにて、Djangoの認可システムを有効にします。INSTALLED_APPSリストにdjango.contrib.authとdjango.contrib.contenttypesを追加します。

それから、アプリケーションの models.py ファイル内で、独自のモデルクラスを定義します。 django.contrib.auth.models モジュール内の User クラスを使用してユーザーを表し、django.contrib.auth.models モジュール内の Permission クラスを使用して、パーミッションを表します。

from django.contrib.auth.models import User, Permission

class MyModel(models.Model):
    # 模型的字段

class MyModelPermission(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    permission = models.ForeignKey(Permission, on_delete=models.CASCADE)

次に、admin.py ファイルにて、モデルの管理クラスを定義し、権限を設定する。

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User, Permission

from .models import MyModel, MyModelPermission

class MyModelAdmin(admin.ModelAdmin):
    # 模型的管理类设置

class MyModelPermissionAdmin(admin.ModelAdmin):
    model = MyModelPermission
    list_display = ('user', 'permission')

admin.site.register(MyModel, MyModelAdmin)
admin.site.register(MyModelPermission, MyModelPermissionAdmin)

# 设置用户权限
admin.site.unregister(User)
admin.site.register(User, UserAdmin)

最後のビューファンクションで@permission_requiredデコレーターを使ってアクセス権限を制限できます。

from django.contrib.auth.decorators import permission_required

@permission_required('app.permission_name')
def my_view(request):
    # 视图函数的代码

こうすれば、Djangoの認証モジュールを使用してユーザーのアクセス権限を設定して制限できます。

bannerAds