ADD file via upload

lm_branch
pjf284zq7 6 months ago
parent 326dc77629
commit c58f7caedc

@ -0,0 +1,91 @@
#lm 用户管理后台配置模块
#lm 功能定义Django admin后台中用户管理的自定义表单和管理员配置
#lm 包含用户创建表单、用户修改表单和用户管理员类的自定义实现
# 导入Django表单基类
from django import forms
# 导入Django内置的用户管理员类用于扩展自定义用户的admin配置
from django.contrib.auth.admin import UserAdmin
# 导入Django内置的用户修改表单用于扩展自定义用户的修改表单
from django.contrib.auth.forms import UserChangeForm
# 导入Django内置的用户名字段类用于自定义用户名字段验证
from django.contrib.auth.forms import UsernameField
# 导入翻译工具,用于实现字段名称的国际化
from django.utils.translation import gettext_lazy as _
# 注册模型时需要导入自定义的用户模型
from .models import BlogUser
class BlogUserCreationForm(forms.ModelForm):
"""自定义用户创建表单用于在admin站点添加新用户时使用"""
#lm 密码字段,使用密码输入框(输入内容隐藏),标签支持国际化
password1 = forms.CharField(label=_('password'), widget=forms.PasswordInput)
#lm 确认密码字段,用于验证两次输入的密码是否一致
password2 = forms.CharField(label=_('Enter password again'), widget=forms.PasswordInput)
class Meta:
#lm 关联的模型为自定义的BlogUser
model = BlogUser
#lm 创建用户时需要填写的字段这里仅指定email其他字段可默认或后续补充
fields = ('email',)
def clean_password2(self):
"""验证两次输入的密码是否一致"""
#lm 获取清洗后的密码1和密码2
password1 = self.cleaned_data.get("password1")
password2 = self.cleaned_data.get("password2")
#lm 如果两次密码都存在且不一致,抛出验证错误
if password1 and password2 and password1 != password2:
raise forms.ValidationError(_("passwords do not match"))
return password2
def save(self, commit=True):
"""保存用户,将密码加密处理,并设置创建来源"""
#lm 调用父类的save方法先不提交到数据库commit=False
user = super().save(commit=False)
#lm 对密码进行加密处理Django内置的密码哈希方法
user.set_password(self.cleaned_data["password1"])
#lm 如果需要提交到数据库
if commit:
#lm 设置用户的创建来源为'adminsite'表示通过admin站点创建
user.source = 'adminsite'
user.save()
return user
class BlogUserChangeForm(UserChangeForm):
"""自定义用户修改表单用于在admin站点编辑用户信息时使用"""
class Meta:
#lm 关联的模型为BlogUser
model = BlogUser
#lm 显示所有字段(可根据需要指定具体字段)
fields = '__all__'
#lm 指定用户名字段的处理类为UsernameField提供内置验证
field_classes = {'username': UsernameField}
def __init__(self, *args, **kwargs):
"""初始化方法,调用父类的初始化逻辑"""
super().__init__(*args, **kwargs)
class BlogUserAdmin(UserAdmin):
"""自定义用户管理员类用于在admin站点配置BlogUser的展示和操作"""
#lm 指定修改用户时使用的表单
form = BlogUserChangeForm
#lm 指定添加用户时使用的表单
add_form = BlogUserCreationForm
#lm 列表页展示的字段
list_display = (
'id', # 用户ID
'nickname', # 昵称
'username', # 用户名
'email', # 邮箱
'last_login', # 最后登录时间
'date_joined', # 注册时间
'source' # 创建来源
)
#lm 列表页中可点击跳转详情页的字段
list_display_links = ('id', 'username')
#lm 列表页的排序方式按ID降序即最新创建的用户在前
ordering = ('-id',)
Loading…
Cancel
Save