From ee5916d1bc3d8bf6adbb692b1e1c0f12c5f63375 Mon Sep 17 00:00:00 2001 From: pg6fnlak2 <306317677@qq.com> Date: Sun, 26 Oct 2025 22:07:08 +0800 Subject: [PATCH] Update admin.py --- src/DjangoBlog-master/accounts/admin.py | 63 +++++++++++++++++-------- 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/src/DjangoBlog-master/accounts/admin.py b/src/DjangoBlog-master/accounts/admin.py index 32e483c..7212922 100644 --- a/src/DjangoBlog-master/accounts/admin.py +++ b/src/DjangoBlog-master/accounts/admin.py @@ -9,15 +9,22 @@ from .models import BlogUser class BlogUserCreationForm(forms.ModelForm): + """ + 自定义用户创建表单,用于在Admin后台添加新用户 + 继承自ModelForm,提供密码验证和哈希处理功能 + """ password1 = forms.CharField(label=_('password'), widget=forms.PasswordInput) password2 = forms.CharField(label=_('Enter password again'), widget=forms.PasswordInput) class Meta: - model = BlogUser - fields = ('email',) + model = BlogUser # 指定使用的模型 + fields = ('email',) # 表单中显示的字段,这里只显示邮箱 def clean_password2(self): - # Check that the two password entries match + """ + 验证两次输入的密码是否一致 + 如果密码不匹配,抛出验证错误 + """ password1 = self.cleaned_data.get("password1") password2 = self.cleaned_data.get("password2") if password1 and password2 and password1 != password2: @@ -25,35 +32,51 @@ class BlogUserCreationForm(forms.ModelForm): return password2 def save(self, commit=True): - # Save the provided password in hashed format - user = super().save(commit=False) - user.set_password(self.cleaned_data["password1"]) + """ + 保存用户信息,对密码进行哈希处理 + commit参数控制是否立即保存到数据库 + """ + user = super().save(commit=False) # 创建用户对象但不保存到数据库 + user.set_password(self.cleaned_data["password1"]) # 对密码进行哈希处理 if commit: - user.source = 'adminsite' - user.save() + user.source = 'adminsite' # 标记用户来源为管理员后台 + user.save() # 保存到数据库 return user class BlogUserChangeForm(UserChangeForm): + """ + 自定义用户信息修改表单 + 继承自Django内置的UserChangeForm,用于在Admin后台编辑用户信息 + """ class Meta: model = BlogUser - fields = '__all__' - field_classes = {'username': UsernameField} + fields = '__all__' # 包含所有字段 + field_classes = {'username': UsernameField} # 指定用户名字段的类型 def __init__(self, *args, **kwargs): + """初始化方法,可以在这里添加自定义的表单逻辑""" super().__init__(*args, **kwargs) class BlogUserAdmin(UserAdmin): - form = BlogUserChangeForm - add_form = BlogUserCreationForm + """ + 自定义用户管理类,配置Admin后台的用户管理界面 + 继承自Django内置的UserAdmin类 + """ + form = BlogUserChangeForm # 设置用户编辑表单 + add_form = BlogUserCreationForm # 设置用户添加表单 + + # 列表页面显示的字段 list_display = ( 'id', - 'nickname', - 'username', - 'email', - 'last_login', - 'date_joined', - 'source') - list_display_links = ('id', 'username') - ordering = ('-id',) + 'nickname', # 昵称 + 'username', # 用户名 + 'email', # 邮箱 + 'last_login', # 最后登录时间 + 'date_joined', # 注册时间 + 'source' # 用户来源 + ) + + list_display_links = ('id', 'username') # 可点击跳转到编辑页面的字段 + ordering = ('-id',) # 按ID倒序排列,最新的用户显示在最前面 \ No newline at end of file