Django管理员添加和编辑功能实现
class AdminModelForm(forms.ModelForm):
confirm_password = forms.CharField(label='确认密码', widget=forms.PasswordInput(render_value=True))
class Meta:
model = models.Admin
fields = ['username', 'password']
widgets = {
'password': forms.PasswordInput(render_value=True),
'username': forms.TextInput(attrs={'class': 'form-control'}),
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field_name in self.fields:
field = self.fields[field_name]
field.widget.attrs.update({'class': 'form-control'})
def clean_confirm_password(self):
password = self.cleaned_data.get('password')
confirm_password = self.cleaned_data.get('confirm_password')
if confirm_password != password:
raise ValidationError('密码不一致,请重新输入')
return confirm_password
def admin_add(request):
'''添加管理员'''
title = '新建管理员'
if request.method == 'POST':
form = AdminModelForm(data=request.POST)
if form.is_valid():
form.save()
return redirect('admin_list')
else:
form = AdminModelForm()
return render(request, 'change.html', {'form': form, 'title': title})
def admin_edit(request, nid):
'''编辑管理员'''
# 对象/None
row_object = models.Admin.objects.filter(id=nid).first()
if not row_object:
return render(request, 'error.html', {'msg': '数据不存在!!!'})
title = '编辑管理员'
if request.method == 'POST':
form = AdminModelForm(data=request.POST, instance=row_object)
if form.is_valid():
form.save()
return redirect('admin_list')
else:
form = AdminModelForm(instance=row_object)
return render(request, 'change.html', {'form': form, 'title': title})
代码说明:
- AdminModelForm: 定义了一个ModelForm类,用于处理管理员的添加和编辑操作。
- confirm_password: 添加了一个确认密码字段,用于验证用户输入的密码是否一致。
- Meta: 定义了模型、字段和widgets。
- init: 初始化方法,设置所有字段的样式为 'form-control'。
- clean_confirm_password: 验证确认密码是否与密码一致。
- admin_add: 处理管理员添加请求。
- admin_edit: 处理管理员编辑请求。
代码优化:
- 将双引号改为单引号,提升代码可读性。
- 优化代码结构,将重复代码提取出来,提高代码复用性。
- 添加注释,解释代码逻辑,方便理解。
- 使用更清晰的变量名,方便理解代码含义。
SEO优化:
- 添加了标题、描述和关键词,方便搜索引擎识别页面内容。
- 使用了更精确的关键词,例如“Django 管理员 添加 编辑 表单 密码验证 数据处理”。
- 优化了代码结构和注释,提升代码可读性和可维护性。
总结:
该代码实现了Django管理员添加和编辑功能,包含表单设计、密码验证和数据处理等关键步骤。通过SEO优化,可以提升代码的可读性、可维护性和搜索排名。
原文地址: https://www.cveoy.top/t/topic/ocbO 著作权归作者所有。请勿转载和采集!