django - 管理员重置密码 - 与完整管理源代码
1. 重置密码
# 重置密码 class AdminChongZhi(BootstrapModelForm): chong_pwd = forms.CharField( label='确认密码', widget=forms.PasswordInput # 密码被清空 # widget=forms.PasswordInput(render_value=True) # 密码不会被清空 ) class Meta: model = models.Admin fields = ['pwd', 'chong_pwd'] widgets = { 'pwd': forms.PasswordInput # 密码被清空 #'pwd': forms.PasswordInput(render_value=True) # 密码不会被清空 } # 密码加密 def clean_pwd(self): pwd = self.cleaned_data.get('pwd') return md5(pwd) # 定义一个钩子方法 def clean_chong_pwd(self): chong = md5(self.cleaned_data.get('chong_pwd')) pwd = self.cleaned_data.get('pwd') if chong != pwd: raise ValidationError('密码不一致,重新输入') return chong def admin_chongzhi(request, nid): row_obj = models.Admin.objects.filter(id=nid).first() # 判断数据是否存在 if not row_obj: return redirect('/admin/list/') title = '重置密码 - {}'.format(row_obj.username) if request.method =='GET': form = AdminChongZhi() return render(request, 'public.html', {'form': form, 'title': title}) form = AdminChongZhi(data=request.POST, instance=row_obj) if form.is_valid(): form.save() return redirect('/admin/list/') return render(request, 'public.html', {'form': form, 'title': title})
urls
path('admin/<int:nid>/chongzhi/', admin.admin_chongzhi, name='admin_chongzhi'),
管理员完整代码 增加改查 重置密码
from django import forms from django.shortcuts import render, redirect # 输出错误信息 from django.core.exceptions import ValidationError from app import models # 引入自己写的modelform from app.utils.bootsrap import BootstrapModelForm # 引入自己写的加密md5() from app.utils.encrypt import md5 def admin_list(request): response = models.Admin.objects.all() return render(request, 'admin_list.html', {'response': response}) class AdminModelForm(BootstrapModelForm): chong_pwd = forms.CharField( label='确认密码', widget=forms.PasswordInput # 密码被清空 #widget=forms.PasswordInput(render_value=True) # 密码不会被清空 ) class Meta: model = models.Admin fields = '__all__' widgets = { 'pwd': forms.PasswordInput # 密码被清空 #'pwd': forms.PasswordInput(render_value=True) # 密码不会被清空 } # 密码加密 def clean_pwd(self): pwd = self.cleaned_data.get('pwd') ''' md5_pwd = md5(pwd) exists = models.Admin.object.filter(id=self.instance.pk, pwd=md5_pwd).exists() if exists: raise ValidationError('密码不能与之前密码一样') return md5_pwd ''' return md5(pwd) # 定义一个钩子方法 def clean_chong_pwd(self): chong = md5(self.cleaned_data.get('chong_pwd')) pwd = self.cleaned_data.get('pwd') if chong != pwd: raise ValidationError('密码不一致,重新输入') return chong # 添加数据 def admin_add(request): title = '添加管理员' if request.method == 'GET': form = AdminModelForm() return render(request, 'public.html', {'form': form, 'title': title}) # POST 校验数据 form = AdminModelForm(data=request.POST) if form.is_valid(): form.save() return redirect('/admin/list/') return render(request, 'public.html', {'form': form}) # 删除数据 def admin_detele(request, nid): models.Admin.objects.filter(id=nid).delete() return redirect('/admin/list/') # 编辑数据 def admin_edit(request, nid): # 获取需要修改的对象 row_obj = models.Admin.objects.filter(id=nid).first() title = '编辑管理员' # 判断数据是否存在 if not row_obj: return redirect('/admin/list/') if request.method == 'GET': # 获取编辑id 的数据 对象 # instance=row_obj 显示编辑框中的默认值 form = AdminModelForm(instance=row_obj) return render(request, 'public.html', {'form': form, 'title': title}) # 校验编辑数据 instance=row_obj ->指定需要修改的数据 form = AdminModelForm(data=request.POST, instance=row_obj) if form.is_valid(): form.save() return redirect('/admin/list/') return render(request, 'public.html', {'form': form, 'title': title}) # 重置密码 class AdminChongZhi(BootstrapModelForm): chong_pwd = forms.CharField( label='确认密码', widget=forms.PasswordInput # 密码被清空 # widget=forms.PasswordInput(render_value=True) # 密码不会被清空 ) class Meta: model = models.Admin fields = ['pwd', 'chong_pwd'] widgets = { 'pwd': forms.PasswordInput # 密码被清空 #'pwd': forms.PasswordInput(render_value=True) # 密码不会被清空 } # 密码加密 def clean_pwd(self): pwd = self.cleaned_data.get('pwd') return md5(pwd) # 定义一个钩子方法 def clean_chong_pwd(self): chong = md5(self.cleaned_data.get('chong_pwd')) pwd = self.cleaned_data.get('pwd') if chong != pwd: raise ValidationError('密码不一致,重新输入') return chong def admin_chongzhi(request, nid): row_obj = models.Admin.objects.filter(id=nid).first() # 判断数据是否存在 if not row_obj: return redirect('/admin/list/') title = '重置密码 - {}'.format(row_obj.username) if request.method =='GET': form = AdminChongZhi() return render(request, 'public.html', {'form': form, 'title': title}) form = AdminChongZhi(data=request.POST, instance=row_obj) if form.is_valid(): form.save() return redirect('/admin/list/') return render(request, 'public.html', {'form': form, 'title': title})

浙公网安备 33010602011771号