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

了解Django.contrib.auth.admin中的UserAdmin():用户管理功能

发布时间:2023-12-25 04:18:21

Django.contrib.auth.admin模块中的UserAdmin类提供了一些用于用户管理的功能。它可以在Django管理后台中使用,用于管理用户的创建、编辑、查看和删除。

首先,我们需要在Django的settings.py文件中将Django.contrib.auth添加到INSTALLED_APPS中,以确保User模型可以被管理。

然后,我们需要在admin.py文件中导入UserAdmin类和User模型,并将User模型注册到admin.site中。

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

admin.site.unregister(User)  # 取消注册默认的User模型

@admin.register(User)
class CustomUserAdmin(UserAdmin):
    pass

在上面的代码中,我们取消注册了默认的User模型,并使用@admin.register装饰器将CustomUserAdmin类注册到admin.site中。然后,我们可以根据需要自定义CustomUserAdmin类,以添加我们想要的用户管理功能。

UserAdmin类提供了一些默认的用户管理功能,如查看用户列表,创建用户,编辑用户和删除用户。

要自定义UserAdmin类,我们可以添加一些属性或方法。例如,我们可以使用list_display属性来定义用户列表中要显示的字段:

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

admin.site.unregister(User)  # 取消注册默认的User模型

@admin.register(User)
class CustomUserAdmin(UserAdmin):
    list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff')

上面的代码中,list_display属性定义了用户列表中要显示的字段。在这个例子中,我们显示了用户名、邮箱、名字、姓氏和是否是管理员。

此外,我们还可以添加一些过滤器和搜索字段来帮助我们快速查找用户:

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

admin.site.unregister(User)  # 取消注册默认的User模型

@admin.register(User)
class CustomUserAdmin(UserAdmin):
    list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff')
    list_filter = ('is_staff', 'is_superuser', 'groups')
    search_fields = ('username', 'email', 'first_name', 'last_name')

上面的代码中,list_filter属性定义了用户列表中可用于过滤的字段,search_fields属性定义了可以用于搜索的字段。在这个例子中,我们可以根据用户是否是管理员、是否是超级用户和所属分组来进行过滤。同时,我们可以使用用户名、邮箱、名字和姓氏来进行搜索。

此外,我们还可以添加一些字段来编辑用户的详细信息。例如,我们可以使用fieldsets属性来定义用户编辑页面的字段集合:

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

admin.site.unregister(User)  # 取消注册默认的User模型

@admin.register(User)
class CustomUserAdmin(UserAdmin):
    list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff')
    list_filter = ('is_staff', 'is_superuser', 'groups')
    search_fields = ('username', 'email', 'first_name', 'last_name')

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

上面的代码中,fieldsets属性定义了用户编辑页面的字段集合。每个字段集合都是一个元组,其中 个元素是字段集合的标题,第二个元素是字段的配置。

以上是一些常见的用户管理功能的使用例子。通过自定义UserAdmin类,我们可以根据项目的需求来添加更多的功能,以便更好地管理用户。