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の認証モジュールを使用してユーザーのアクセス権限を設定して制限できます。