Django.contrib.auth.admin中的UserAdmin():用户权限管理与精细化控制
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(),我们可以方便地管理和控制用户的权限,并根据需求添加自定义的字段和验证逻辑。
