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})

 

posted @ 2022-05-31 13:16  我在春天等伱  阅读(203)  评论(0)    收藏  举报