Django.contrib.auth.admin中的UserAdmin():用户登录记录查看
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提供的用户管理类来管理和查看用户的登录记录。
