欢迎访问宙启技术站
智能推送

使用Django.contrib.auth.admin管理用户权限

发布时间:2024-01-19 06:41:51

Django.contrib.auth.admin是Django内置的管理用户权限的模块,它提供了一些方便的工具和视图来管理用户和用户组的权限。下面是一个使用Django.contrib.auth.admin管理用户权限的示例。

首先,需要在Django项目的settings.py文件中配置AUTHENTICATION_BACKENDS和AUTH_USER_MODEL:

AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
]

AUTH_USER_MODEL = 'your_auth_app.User'

然后,在你的应用中创建一个名为your_auth_app的应用,并在models.py文件中定义一个自定义的User模型:

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    # 添加自定义字段
    phone_number = models.CharField(max_length=20)

接下来,在your_auth_app的admin.py文件中注册User模型,并设置UserAdmin类来管理用户权限:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from .models import User

class UserAdmin(BaseUserAdmin):
    # list_display用于设置在用户列表页面上显示的字段
    list_display = ('username', 'email', 'phone_number', 'is_staff')

    # fieldsets用于设置显示和编辑用户信息页面的字段分组
    fieldsets = (
        (None, {'fields': ('username', 'password')}),
        ('Personal info', {'fields': ('email', 'phone_number')}),
        ('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
        ('Important dates', {'fields': ('last_login', 'date_joined')}),
    )

    # add_fieldsets用于设置创建用户页面的字段分组
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username', 'email', 'phone_number', 'password1', 'password2'),
        }),
    )

    # search_fields用于设置用户列表页面的搜索条件
    search_fields = ('username', 'email', 'phone_number')

    # ordering用于设置用户列表页面的排序字段
    ordering = ('username',)

admin.site.register(User, UserAdmin)

在这个示例中,我们从Django.contrib.auth.admin中继承了UserAdmin类,并进行了一些自定义设置。例如,使用list_display来指定在用户列表页面上显示的字段,使用fieldsets来设置用户信息页面的字段分组,使用add_fieldsets来设置创建用户页面的字段分组,使用search_fields来设置用户列表页面的搜索条件,使用ordering来设置用户列表页面的排序字段。

最后,在你的应用的urls.py文件中添加以下代码以在admin站点中注册用户管理页面和组管理页面:

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]

现在,你可以运行Django开发服务器并访问/admin路径来管理用户权限了。在用户列表页面,你可以看到我们通过list_display指定的字段,并且可以使用search_fields进行搜索。点击某个用户,你将进入用户信息页面,可以编辑用户信息,并设置用户的权限和用户组。在创建用户页面,你可以看到我们通过add_fieldsets指定的字段。

这就是一个使用Django.contrib.auth.admin管理用户权限的简单例子。通过使用Django.contrib.auth.admin,你可以方便地管理用户的权限和用户组。你可以根据自己的需求自定义UserAdmin类,并在注册时使用UserAdmin类来管理用户模型。