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

Django.contrib.auth.admin中的UserAdmin():用户权限管理与精细化控制

发布时间:2023-12-25 04:22:17

Django.contrib.auth.admin中的UserAdmin()提供了用户权限管理和精细化控制的功能。它是Django自带的一个Admin模块,用于管理用户信息和用户权限。

在使用UserAdmin()之前,我们需要先导入相应的模块:

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

然后,我们需要注册User模型到Admin中,这样才能使用UserAdmin():

admin.site.register(User, UserAdmin)

下面介绍一些UserAdmin()常用的功能和例子:

1. 列表展示用户信息

UserAdmin()提供了一个列表展示所有用户的功能,包括用户名、邮箱、是否激活等信息:

list_display = ('username', 'email', 'is_active')

这样设置之后,Admin页面将显示用户列表,并展示每个用户的用户名、邮箱和激活状态。

2. 过滤功能

UserAdmin()还提供了过滤功能,用于按照条件筛选用户。例如,我们可以按照用户的激活状态进行过滤:

list_filter = ('is_active',)

这样设置之后,Admin页面将在侧边栏提供一个过滤器,用于按照用户的激活状态进行筛选。

3. 搜索功能

UserAdmin()还提供了搜索功能,用于按照关键词搜索用户。例如,我们可以按照用户名和邮箱进行搜索:

search_fields = ('username', 'email')

这样设置之后,Admin页面将提供一个搜索框,可以按照关键词搜索用户。

4. 添加字段到User Change页面

UserAdmin()还可以添加字段到User Change页面,用于在编辑用户信息时显示额外的字段。例如,我们可以添加一个自定义的字段"role":

fieldsets = (
    (None, {'fields': ('username', 'password')}),
    ('Personal info', {'fields': ('email', 'role')}),
    ('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
    ('Important dates', {'fields': ('last_login', 'date_joined')}),
)

这样设置之后,User Change页面将展示用户的邮箱和角色字段。

5. 定制用户的表单验证

UserAdmin()还可以定制用户的表单验证,用于在创建或编辑用户时进行自定义的验证逻辑。例如,我们可以添加一个自定义的验证,要求用户名必须以字母开头:

form = UserChangeForm
add_form = UserCreationForm

def clean_username(self):
    username = self.cleaned_data['username']
    if not username[0].isalpha():
        raise forms.ValidationError('Username must start with a letter')
    return username

这样设置之后,当创建或编辑用户时,如果用户名不以字母开头,将抛出验证错误信息。

以上是Django.contrib.auth.admin中的UserAdmin()的一些常用功能和使用例子。通过UserAdmin(),我们可以方便地管理和控制用户的权限,并根据需求添加自定义的字段和验证逻辑。