diff --git a/doc/开源软件泛读报告.docx b/doc/开源软件泛读报告.docx new file mode 100644 index 0000000..705e65d Binary files /dev/null and b/doc/开源软件泛读报告.docx differ diff --git a/src/DjangoBlog-master/accounts/admin.py b/src/DjangoBlog-master/accounts/admin.py index 110a797..72cd586 100644 --- a/src/DjangoBlog-master/accounts/admin.py +++ b/src/DjangoBlog-master/accounts/admin.py @@ -12,6 +12,7 @@ from .models import BlogUser # 自定义用户创建表单(用于后台添加用户时使用) # ====================== class BlogUserCreationForm(forms.ModelForm): +<<<<<<< HEAD # 添加两个密码字段,用于用户注册时输入和确认密码 password1 = forms.CharField( label=_('password'), # 字段显示名称(可翻译),这里是“password” @@ -31,6 +32,24 @@ class BlogUserCreationForm(forms.ModelForm): 校验两次输入的密码是否一致 """ # 从 cleaned_data 中获取用户输入的两个密码 +======= + """ + 自定义用户创建表单,用于在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',) # 表单中显示的字段,这里只显示邮箱 + + def clean_password2(self): + """ + 验证两次输入的密码是否一致 + 如果密码不匹配,抛出验证错误 + """ +>>>>>>> master password1 = self.cleaned_data.get("password1") password2 = self.cleaned_data.get("password2") @@ -43,6 +62,7 @@ class BlogUserCreationForm(forms.ModelForm): def save(self, commit=True): """ +<<<<<<< HEAD 保存用户对象,并对密码进行哈希处理 """ # 调用父类的 save 方法,但不立即提交到数据库(commit=False) @@ -58,6 +78,16 @@ class BlogUserCreationForm(forms.ModelForm): user.save() # 返回保存后的用户对象 +======= + 保存用户信息,对密码进行哈希处理 + commit参数控制是否立即保存到数据库 + """ + user = super().save(commit=False) # 创建用户对象但不保存到数据库 + user.set_password(self.cleaned_data["password1"]) # 对密码进行哈希处理 + if commit: + user.source = 'adminsite' # 标记用户来源为管理员后台 + user.save() # 保存到数据库 +>>>>>>> master return user @@ -65,7 +95,12 @@ class BlogUserCreationForm(forms.ModelForm): # 自定义用户修改表单(用于后台编辑用户信息时使用) # ====================== class BlogUserChangeForm(UserChangeForm): + """ + 自定义用户信息修改表单 + 继承自Django内置的UserChangeForm,用于在Admin后台编辑用户信息 + """ class Meta: +<<<<<<< HEAD model = BlogUser # 指定关联的模型是 BlogUser fields = '__all__' # 表单中包含模型的所有字段 # 指定 username 字段使用 Django 提供的 UsernameField,它对用户名有特殊处理(如唯一性等) @@ -76,12 +111,22 @@ class BlogUserChangeForm(UserChangeForm): 初始化方法,这里暂时没有额外逻辑,只是调用了父类的初始化 """ super().__init__(*args, ​**kwargs) +======= + model = BlogUser + fields = '__all__' # 包含所有字段 + field_classes = {'username': UsernameField} # 指定用户名字段的类型 + + def __init__(self, *args, **kwargs): + """初始化方法,可以在这里添加自定义的表单逻辑""" + super().__init__(*args, **kwargs) +>>>>>>> master # ====================== # 自定义用户管理后台类(用于在 Django Admin 中管理 BlogUser 模型) # ====================== class BlogUserAdmin(UserAdmin): +<<<<<<< HEAD # 指定用户修改时使用的表单类(编辑用户信息时) form = BlogUserChangeForm @@ -104,4 +149,26 @@ class BlogUserAdmin(UserAdmin): list_display_links = ('id', 'username') # 定义默认排序方式,这里是按照 id 降序(最新的用户在前面) - ordering = ('-id',) \ No newline at end of file + ordering = ('-id',) +======= + """ + 自定义用户管理类,配置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',) # 按ID倒序排列,最新的用户显示在最前面 +>>>>>>> master