定义一个基类form,用于获取错误信息

  1. from wtforms import Form
  2.  
  3. class BaseForm(Form):
    def get_error(self):
    # a = {'aaa': [xxx], 'bbb': [www]} a.popitem()[1][0]=xxx
    message = self.errors.popitem()[1][0] # 取第一个错误的错误信息
    return message

form验证,继承自定义的BaseForm

  1. from wtforms import StringField, IntegerField
    from wtforms.validators import Email, InputRequired, Length, EqualTo
  2.  
  3. from ..forms import BaseForm
  4.  
  5. class ResetpwdForm(BaseForm):
    oldpwd = StringField(validators=[InputRequired(message='请输入密码'), Length(6, 20, message='密码6~20位')])
    newpwd = StringField(validators=[InputRequired(message='请输入密码'), Length(6, 20, message='密码6~20位')])
    newpwd2 = StringField(validators=[EqualTo('newpwd', message='两次密码不一致')])
  6.  
  7. class LoginForm(BaseForm):
    email = StringField(validators=[InputRequired(message='请输入邮箱'), Email(message='邮箱格式错误')])
    password = StringField(validators=[InputRequired(message='请输入密码'), Length(6, 20, message='密码6~20位')])
    remember = IntegerField()

视图逻辑

  1. class ResetPwd(views.MethodView):
    decorators = [login_required] # 校验登录状态
  2.  
  3. def get(self, message=None):
    return render_template('cms/cms_resetpwd.html', message=message)
  4.  
  5. def post(self):
    form = ResetpwdForm(request.form)
    if form.validate():
    newpwd = form.newpwd.data
    oldpwd = form.oldpwd.data
    user = g.cms_user
    if user.check_password(oldpwd):
    user.password = newpwd
    db.session.commit()
    return jsonify({'code': 200, 'message': '修改成功'})
    else:
    return jsonify({'code': 400, 'message': '旧密码错误'})
    else:
    return jsonify({'code': 400, 'message': form.get_error()})
  6.  
  7. bp.add_url_rule('/resetpwd/', view_func=ResetPwd.as_view('resetpwd'))

请求

一百:CMS系统之修改密码逻辑的更多相关文章

  1. windows系统远程修改密码

    1.需求:公司需要短时间.批量修改一些windows系统的管理员密码: 2.准备工作: a.下载软件:链接:https://pan.baidu.com/s/1kV52DqE1_4siPuxS5Mosc ...

  2. 一百零六:CMS系统之修改邮箱功能完成

    这里采用把验证码放到memcached中,所以封装一个memcached的操作 import memcache cache = memcache.Client(['127.0.0.1:11211'], ...

  3. 一百零四:CMS系统之修改邮箱界面

    在base.css中加一个全局的css控制宽度 .form-container{ width: 300px;} 视图 class ResetEmailView(views.MethodView): d ...

  4. OpenLDAP,一登录系统就修改密码

    http://guodayong.blog.51cto.com/263451/d-2 郭大勇的博客   1:修改配置文件 在前面打开注释 moduleload ppolicy.la modulepat ...

  5. OpenLDAP一登录系统就修改密码

    1:修改配置文件 在前面打开注释 moduleload ppolicy.la modulepath /usr/lib/openldap modulepath /usr/lib64/openldap   ...

  6. Shell脚本中非交互式修改密码的方法(转)

    这篇文章主要介绍了Shell脚本中非交互式修改密码的两种方法,本文讲解了使用chpasswd和使用passwd和--stdin组合两种方法,需要的朋友可以参考下. 对系统定期修改密码是一个很重要的安全 ...

  7. 九十九:CMS系统之ajax提交修改密码的数据

    顺便实现ajax提交的时候默认提交csrf_token var http = { 'get':function (args) { args['method'] = 'get'; this.ajax(a ...

  8. 九十八:CMS系统之登录页面CSRF保护和修改密码页面

    加上CSRF防御 修改密码页面 视图 class ResetPwd(views.MethodView): decorators = [login_required] # 校验登录状态 def get( ...

  9. 31、Flask实战第31天:cms后台修改密码

    cms后台修改密码界面布局 先创建cms_resetpwd.html页面,继承cms_base.html {% extends 'cms/cms_base.html' %} {% block titl ...

随机推荐

  1. sql server 防 注入

    这里使用的是参数化 SqlParameter useremail = new SqlParameter("@useremail", user.user_Email); SqlPar ...

  2. 四:MVC之LINQ方法语法

    linq 查询 有两种语法  ,前面我们说了一种,接下来说方法语法(我读着一直很绕口) 查询语法,方法语法 ------------------------以下文字都是复制-------------- ...

  3. 用tensorflow实现SVM

    环境配置 win10 Python 3.6 tensorflow1.15 scipy matplotlib (运行时可能会遇到module tkinter的问题) sklearn 一个基于Python ...

  4. ELK架构图示例

    这是最简单的一种ELK架构方式.优点是搭建简单,易于上手.缺点是Logstash耗资源较大,运行占用CPU和内存高.另外没有消息队列缓存,存在数据丢失隐患. 此架构由Logstash分布于各个节点上搜 ...

  5. [HBase]region compaction流程

  6. CAP理论概述

    CAP理论 CAP原则,指在一个分布式系统中,Consistency(一致性).Availability(可用性).Partitiontolerance(分区容错性),三者不可同时拥有. 一致性(C) ...

  7. 【SaltStack官方版】—— returners——返回器

    ETURNERS 返回器 By default the return values of the commands sent to the Salt minions are returned to t ...

  8. MFC 画笔CPen、画刷CBrush

    新建单个文档的MFC应用程序,类视图——View项的属性——消息,WM_PAINT,创建OnPaint()函数 dc默认有一个画笔(实心1像素宽黑线). CPen画笔非实心线像素宽必须为1,否则膨胀接 ...

  9. PHP mysqli_free_result() 函数

    mysqli_free_result() 函数释放结果内存. <?php // 假定数据库用户名:root,密码:123456,数据库:RUNOOB $con=mysqli_connect(&q ...

  10. [Luogu] 排序机械臂

    https://www.luogu.org/problemnew/solution/P3165 预处理 我们会发现一个问题:高度是无序的,而splay中要求有序,否则kth不能正确求解.不需要求高度, ...