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

Django.contrib.auth.admin中的UserAdmin():用户登录记录查看

发布时间:2023-12-25 04:19:35

Django.contrib.auth.admin中的UserAdmin()是Django提供的一个默认的用户管理类,用于管理用户的登录记录。它提供了一个用户列表页面,可以查看和编辑用户信息,并且可以查看用户的登录记录。

下面是一个简单的使用例子:

首先,需要在settings.py文件中将authentication系统的应用添加到INSTALLED_APPS列表中,如下所示:

INSTALLED_APPS = [
    ...
    'django.contrib.auth',
    'django.contrib.admin',
    ...
]

然后,在你的app的admin.py文件中导入UserAdmin类,并将其与User模型关联起来,如下所示:

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

admin.site.unregister(User)
admin.site.register(User, UserAdmin)

现在,你就可以在admin界面中查看和编辑用户信息了。

接下来,我们需要在UserAdmin类中添加登录记录的查看功能。

首先,我们需要导入相关的模型类和装饰器,以便注册自定义的action方法。在admin.py文件中添加以下代码:

from django.contrib.auth.models import User
from django.contrib.admin import action
from django.contrib.auth.admin import UserAdmin
from django.utils.translation import gettext_lazy as _

然后,我们可以在UserAdmin类中定义一个自定义的action方法,用于查看用户的登录记录。在UserAdmin类中添加以下代码:

class MyUserAdmin(UserAdmin):
    list_display = ('username', 'email', 'last_login', 'date_joined', 'is_active', 'is_staff', 'is_superuser')
    actions = ['view_login_history']

    @action(description=_('View Login History'), permission='view_login_history')
    def view_login_history(self, request, queryset):
        selected = queryset.values_list('username', flat=True)
        usernames = ', '.join(selected)
        message = f"Viewing login history for user(s): {usernames}"
        self.message_user(request, message)

在上述代码中,我们为UserAdmin类中的list_display属性添加了一个新的字段last_login,用于显示用户的最后登录时间。

我们还定义了一个名为view_login_history的自定义action方法,它被装饰为一个action,并设置了description和permission参数。

在view_login_history方法中,我们获取了选中的用户的用户名,并将其连接成一个字符串。然后,我们使用self.message_user方法向页面添加一条消息,显示正在查看登录记录的用户信息。

最后,我们需要将自定义的UserAdmin类注册到admin.site中。在admin.py文件中添加以下代码:

admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)

现在,你可以通过在admin界面中选择一个或多个用户并选择“View Login History”操作来查看选定用户的登录记录。

总结:

Django.contrib.auth.admin中的UserAdmin()是Django提供的一个默认的用户管理类,用于管理用户的登录记录。

使用UserAdmin类需要在admin.py文件中进行相应的配置和注册。

可以通过自定义的action方法来实现查看用户的登录记录功能。

以上是一个简单的用户登录记录查看的例子,通过学习和理解这个例子,你可以更好地利用Django提供的用户管理类来管理和查看用户的登录记录。