专栏首页用户6517667的专栏基于Django的电子商务网站开发(连载18)

基于Django的电子商务网站开发(连载18)

3.3.4 用户登录密码修改

系统为用户提供用户登录密码的修改。根据需求定义,修改用户密码的时候,必须提供旧密码、新密码和新密码的确认,并且新密码不能与旧密码相同。如果旧密码不正确、新密码与旧密码相同或者新密码和新密码的确认信息不一致,系统应该给出相应的提示信息。

1. urls.py

...url(r'^change_password/$', views.change_password),...

2. views. py

...# 修改用户密码def change_password(request): util = Util() username = util.check_user(request) if username=="": uf = LoginForm() return render(request,"index.html",{'uf':uf,"error":"请登录后再进入"}) else: count = util.cookies_count(request) #获得当前登录用户的用户信息 user_info = get_object_or_404(User,username=username) #如果是提交表单,获取表单信息,并且进行表单信息验证 if request.method == "POST": #获取旧密码 oldpassword=(request.POST.get("oldpassword", "")).strip() #获取新密码 newpassword=(request.POST.get("newpassword", "")).strip() #获取新密码的确认密码 checkpassword=(request.POST.get("checkpassword", "")).strip() #如果旧密码不正确,报错误信息,不允许修改 if oldpassword !=user_info.password: return render(request,"change_password.html",{"user": username,"error":"旧密码不正确","count":count}) #如果新密码与旧密码相同,报错误信息,不允许修改 elif newpassword ==oldpassword: return render(request,"change_password.html",{"user": username,"error":"新密码不能与旧密码相同","count":count}) #如果新密码与新密码的确认密码不匹配,报错误信息,不允许修改 elif newpassword != checkpassword: return render(request,"change_password.html",{"user": username,"error":"确认密码与新密码不匹配","count":count}) else: #否则修改成功 User.objects.filter(username=username).update(password=newpassword) return render(request,"change_password.html",{"user": username,"error":"密码修改成功","count":count}) #如果不是提交表单,显示修改密码页面 else: return render(request,"change_password.html",{"user": username,"count":count})...

(1)首先确认当前用户是否为登录用户。

(2)然后判断是否为表单提交状态。如果不是显示修改密码页面,否则获取旧密码、新密码和新密码确认码。

(3)最后作如下三项判断操作。

① 旧密码是否正确。

② 新密码与旧密码是否不相同。

③ 新密码与新密码的确认码是否相同。

(4)如果不满足需求,跳转到change_password.html页面中显示错误信息,否则通过代码User.objects.filter(username=username).update(password=newpassword)保存新密码。

(5)返回change_password.html显示密码修改正确的信息。

3. 模板

change_password.html

{% extends "base.html" %}{% block content %} <li><a href="/view_chart/">查看购物车<font color="#FF0000">{{ count }}</font></a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="/user_info/">{{user}}</a></li> <li><a href="/logout/">退出</a></li> </ul> </div><!--/.nav-collapse --> </div> </nav> <div class="container theme-showcase" role="main"> <div> <div id="navbar" class="navbar-collapse collapse"> </div><!--/.navbar-collapse --> </div> <div> <div> <form action="/change_password/" method="post" enctype="multipart/form-data"> <p style="color:red">{{error}}</p><br> 旧密码:<input name="oldpassword" type="password" required><br> 新密码:<input name="newpassword" type="password" required><br> 确认密码:<input name="checkpassword" type="password" required><br> <input type="submit" value="修改"> </form> </div> </div> {% endblock %}

用户密码修改页面如图3-6所示。

图3-6 用户密码修改页面

星云测试

http://www.teststars.cc

奇林软件

http://www.kylinpet.com

联合通测

http://www.quicktesting.net

本文分享自微信公众号 - 软件测试培训(iTestTrain),作者:顾翔

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 软件安全性测试(连载12)

    除了XSS注入外,还存在XML注入、JSON注入和XPath注入三种代码注入情形。

    小老鼠
  • 基于Django的电子商务网站开发(连载19)

    表3-3为修改用户密码测试用例,在这里我们假设旧密码为“000000”,新密码为“123456”,设计4个测试用例,分别为。

    小老鼠
  • 基于Django的电子商务网站开发(连载37)

    顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscr...

    小老鼠
  • Flask前后端分离实践:Todo App(2)

    本文项目地址: https://github.com/frostming/flask-vue-todo

    岂不美哉Frost
  • python笔记:#009#判断语句

    判断(if)语句 目标 开发中的应用场景 if 语句体验 if 语句进阶 综合应用 01. 开发中的应用场景 生活中的判断几乎是无所不在的,我们每天都在做各种各...

    _gongluck
  • python笔记:#009#判断语句

    gongluck
  • R语言 判别分析

    #判别分析 用以判别个体所属群体的一种统计方法 判别分析重点是两类群体的判别方法 #主要判别分析方法 有距离判别 贝叶斯判别 费歇判别法 1、关键点: #贝叶斯...

    学到老
  • R语言 判别分析

    #贝叶斯判别 贝叶斯判别式假定对研究对象已有一定的认识 这种认识常用先验概率来描述

    学到老
  • Python判断(if)语句

    生活中的判断几乎是无所不在的,我们每天都在做各种各样的选择,如果这样?如果那样?……

    Devops海洋的渔夫
  • 如何用一行代码实现excel导入导出

    早期我们实现excel导入导出的技术方案,可能会不假思索的选用Apache poi、jxl。但他们存在内存消耗大,编码相对繁琐。好在现在阿里开源了EasyExc...

    lyb-geek

扫码关注云+社区

领取腾讯云代金券