Django Admin 管理员添加、编辑、删除和重置密码
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(),
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._set_widget_attrs()
def _set_widget_attrs(self):
for field_name in ['password', 'confirm_password', 'username']:
field = self.fields.get(field_name)
if field:
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 forms.ValidationError('密码不一致,请重新输入')
return confirm_password
# views.py
def admin_add(request):
'''添加管理员'''
title = '新建管理员'
form = AdminModelForm()
if request.method == 'POST':
form = AdminModelForm(data=request.POST)
if form.is_valid():
form.save()
return redirect('admin_list')
context = {'title': title, 'form': form}
return render(request, 'change.html', context)
def admin_edit(request, nid):
'''编辑管理员'''
row_object = models.Admin.objects.filter(id=nid).first()
if not row_object:
return render(request, 'error.html', {'msg': '数据不存在!!!'})
title = '编辑管理员'
form = AdminModelForm(instance=row_object)
if request.method == 'POST':
form = AdminModelForm(data=request.POST, instance=row_object)
if form.is_valid():
form.save()
return redirect('admin_list')
context = {'title': title, 'form': form}
return render(request, 'change.html', context)
def admin_delete(request, nid):
'''删除管理员'''
models.Admin.objects.filter(id=nid).delete()
return redirect('admin_list')
def admin_reset(request, nid):
'''重置密码'''
row_object = models.Admin.objects.filter(id=nid).first()
if not row_object:
return redirect('admin_list')
title = f'重置密码 -- {row_object.username}'
return render(request, 'change.html', {'title': title})
该代码使用了 Django 的 ModelForm 类来创建管理员的表单,并使用 forms.PasswordInput 小部件来确保密码安全输入。代码还包含以下功能:
- 添加管理员:使用 admin_add 函数,用户可以添加新的管理员,并使用 forms.PasswordInput 确保密码安全输入,以及 clean_confirm_password 方法验证密码一致性。
- 编辑管理员:使用 admin_edit 函数,用户可以编辑现有管理员的信息,并使用 forms.PasswordInput 确保密码安全输入,以及 clean_confirm_password 方法验证密码一致性。
- 删除管理员:使用 admin_delete 函数,用户可以删除现有管理员。
- 重置密码:使用 admin_reset 函数,用户可以重置现有管理员的密码。
该代码示例可以帮助用户快速构建一个简单的管理员管理系统。用户可以根据需要进行修改和扩展。
原文地址: https://www.cveoy.top/t/topic/occX 著作权归作者所有。请勿转载和采集!