使用Django.contrib.auth.admin管理用户权限
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类来管理用户模型。
