实现用户密码的重置(不能设置和以前相同的密码)

1、设置url

path('admain/<int:nid>/reset/',admain.admain_reset)

2、设置类

class AdmainResetModelForm(BootStrapModelForm):
    confirm_password = forms.CharField(
        label="确认密码",
        # 不删除里面的内容
        widget=forms.PasswordInput(render_value=True)
    )

    class Meta:
        model = models.Admin
        fields = [ "password", "confirm_password"]
        widgets = {
            "password": forms.PasswordInput(render_value=True)
        }
    def clean_password(self):
        pwd = self.cleaned_data.get("password")
        md5_pwd=md5(pwd)
        exists=models.Admin.objects.filter(id=self.instance.pk,password=md5_pwd).exists()
        if exists:
            raise ValidationError("不能和以前的密码一致")
        return md5(pwd)

    # 钩子函数
    def clean_confirm_password(self):
        pwd = self.cleaned_data.get("password")
        confirm = md5(self.cleaned_data.get("confirm_password"))
        if confirm != pwd:
            raise ValidationError("密码不一致")
        return confirm

3、视图函数

def admain_reset(request,nid):
    row_object=models.Admin.objects.filter(id=nid).first()
    if not row_object:
        return redirect('/admain/list')
    title="重置密码-{}".format(row_object.username)

    if request.method=="GET":
        form=AdmainResetModelForm()
        return render(request,"add.html",{"form":form,"title":title})

    form=AdmainResetModelForm(data=request.POST,instance=row_object)
    if form.is_valid():
        form.save()
        return redirect("/admain/list/")
    return render(request,"add.html",{"form":form,"title":title})

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。   Bootcfg   bootcfg 命令启动配置和故障恢复(对于大多数计算机,即 boot.ini 文件)。   含有下列参数的 bootcfg 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 bootcfg 命令。   用法:   bootcfg /default  设置默认引导项。   bootcfg /add    向引导列表中添加 Windows 安装。   bootcfg /rebuild  重复全部 Windows 安装过程并允许用户选择要添加的内容。   注意:使用 bootcfg /rebuild 之前,应先通过 bootcfg /copy 命令备份 boot.ini 文件。   bootcfg /scan    扫描用于 Windows 安装的所有磁盘并显示结果。   注意:这些结果被静态存储,并用于本次会话。如果在本次会话期间磁盘配置发生变化,为获得更新的扫描,必须先重新启动计算机,然后再次扫描磁盘。   bootcfg /list   列出引导列表中已有的条目。   bootcfg /disableredirect 在启动引导程序中禁用重定向。   bootcfg /redirect [ PortBaudRrate] |[ useBiosSettings]   在启动引导程序中通过指定配置启用重定向。   范例: bootcfg /redirect com1 115200 bootcfg /redirect useBiosSettings   hkdsk   创建并显示磁盘的状态报告。Chkdsk 命令还可列出并纠正磁盘上的错误。   含有下列参数的 chkdsk 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 chkdsk 命令。   vol [drive:] [ chkdsk [drive:] [/p] [/r]   参数  无   如果不带任何参数,chkdsk 将显示当前驱动器中的磁盘状态。 drive: 指定要 chkdsk 检查的驱动器。 /p   即使驱动器不在 chkdsk 的检查范围内,也执行彻底检查。该参数不对驱动器做任何更改。 /r   找到坏扇区并恢复可读取的信息。隐含着 /p 参数。   注意 Chkdsk 命令需要 Autochk.exe 文件。如果不能在启动目录(默认为 %systemroot%System32)中找到该文件,将试着在 Windows 安装 CD 中找到它。如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动器上使用该命令。 Diskpart   创建和删除硬盘驱动器上的分区。diskpart 命令仅在使用故障恢复控制台时才可用。   diskpart [ /add |/delete] [device_name |drive_name |partition_name] [size]   参数 无   如果不带任何参数,diskpart 命令将启动 diskpart 的 Windows 字符模式版本。   /add   创建新的分区。   /delete   删除现有分区。   device_name   要创建或删除分区的设备。设备名称可从 map 命令的输出获得。例如,设备名称:   DeviceHardDisk0   drive_name   以驱动器号表示的待删除分区。仅与 /delete 同时使用。以下是驱动器名称的范例:   D:   partition_name   以分区名称表示的待删除分区。可代替 drive_name 使用。仅与 /delete 同时使用。以下是分区名称的范例:   DeviceHardDisk0Partition1    大小   要创建的分区大小,以兆字节 (MB)表示。仅与 /add 同时使用。   范例   下例将删除分区: diskpart /delete Device HardDisk0 Partition3 diskpart /delete F:   下例将在硬盘上添加一个 20 MB 的分区:   diskpart /add Device HardDisk0 20   Fixboot
电子密码锁总体设计方案 电子密码锁设计 一、目标 1、任务和目标 本项目设计一种基于AT89C51单片机控制的电子密码锁,要求达到以下任务目标: (1)可通过键盘输入密码控制开关的开锁和闭锁; (2)可通过扩展的LCD显示器显示输入的密码; (3)密码可以多次改写和重置; (4)连续三次输入密码错误,报警装置开始工作,密码锁进入锁机状态。 2、功能需求简述 "功能 " " "具体阐述 " " "1、密码输入 "系统启动后,通过键盘输入初始密码"111111",按下密码输 " "及核对功能 "入键进行确认,密码锁开锁,之后通过点击输入新密码键, " " "输入6位新密码,点击新密码保存键,新密码保存; " " "电子密码锁具有多组密码和管理员超级密码功能; " " "如果密码正确,可进行开锁动作。若密码不正确,系统将给 " " "出提示告知用户已经输入的次数,若三次错误输入后,系统 " " "自动锁定键盘,屏蔽所有操作,并显示"waiting...."; " " "系统自动锁定时间为五分钟,锁定时间过后,系统提示"in " " "put again",此时可重新输入密码,进行开锁操作; " " "保密功能:每次输入的密码数字,显示的均是"*"符号; " " "当按下开锁键,系统将输入与密码进行检查核对,如果正确 " " "锁打开,否则不打开,并发出报警提示。 " "2、多组密码 "在用户设置了一组常用密码基础之上,可以另外在设置2组备" "设置功能 "用密码,以增加多用户使用功能,满足用户的基本需求; " " "在用户丢失或遗忘一组密码后,可以通过另外的几组备用密 " " "码进行开锁并并对密码进行再次修改和设定,增加了密码锁 " " "使用的灵活性; " " "可以设置一组超级密码"999999",在任何情况下,凭借超级 " " "密码都可以开锁和修改密码。 " "3、报警功能 "设置密码锁开锁次数为3次,当输入超过三次还未开锁成功时" " ",蜂鸣器报警30秒,并且锁定键盘。十分钟内不能进行任何 " " "操作,等待锁定时间过后,解除警报,密码锁恢复输入功能 " " ",提示"in put again"; " " "在每一次输入密码后,系统都会以英文字符的形式给出输入 " " "密码正确与否,若是错误系统会给予警告。 " "4、个人密码 "密码可以由用户自己修改设定,锁打开后才能修改密码,修 " "更改功能 "改密码之前必须再次输入密码; " " "先用初始密码开锁,在开锁成功后点击"输入新密码"使系统 " " "进入修改个人密码状态; " " "个人可以随设置新的密码设置完成后点击"保存新密码"按 " " "键,新密码设置成功;此该新密码以前密码都可以进行 " " "开锁操作; " " "此时可输入6位新的个人密码,点击新密码保存,密码更改成" " "功。 " "5、时间显示 "系统启动后会自动显示当地的即时时间,显示方式为:时-分" "和计时功能 "-秒 " " "在输入密码时软前后相邻的两个密码符输入时间间隔超过10 " " "分钟,则系统自动放弃本次操作,返回到重新输入密码阶段 " 二、详细设计方案的选择及设计思路概述 1、设计方案的选择 本次设计的密码锁在理论上可以利用多种设计方法及原理进行设计,依据设计的简单 、高效、易于实现等原则,主要有两种设计方案可供选择,即:数字电路控制和以AT89 C51为核心的单片机控制两种方案。现在对其两种方案进行可行性对比分析。 方案一:采用数字电路控制。其原理图下图1所示。 图1 数字密码锁电路方案 电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因 为停电造成的密码锁电路失效,使用户免遭麻烦。 采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑 电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键, 其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效, 需要重新输入。密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电 路、报警电路、键盘输入次数锁定电路。 方案二:采用一种是用以AT89C51为核心的单片机控制方案。利用单片机灵活的编程 设计和丰富的I/O端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加多 组密码设置、报警提示等控制功能。其原理如下图2所示。 图2 单片机控制方案 密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路。 通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而 且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用一种 以89C51为核心的单片机控制方

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值