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

from wtforms import Form

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

from wtforms import StringField, IntegerField
from wtforms.validators import Email, InputRequired, Length, EqualTo from ..forms import BaseForm 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='两次密码不一致')]) class LoginForm(BaseForm):
email = StringField(validators=[InputRequired(message='请输入邮箱'), Email(message='邮箱格式错误')])
password = StringField(validators=[InputRequired(message='请输入密码'), Length(6, 20, message='密码6~20位')])
remember = IntegerField()

视图逻辑

class ResetPwd(views.MethodView):
decorators = [login_required] # 校验登录状态 def get(self, message=None):
return render_template('cms/cms_resetpwd.html', message=message) 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()}) 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. JDK 安装部署

    环境: OS: CentOS 6.4 JDK版本: jdk-7u17-linux-x64.tar.gz 一.解压JDK程序包: # tar -xf jdk-7u17-linux-x64.tar.gz ...

  2. 工作中常用的Git操作

    粘贴自:微信公众号:程序员共成长 分支操作: git branch 创建分支 git branch -b 创建并切换到新建的分支上 git checkout 切换分支 git branch 查看分支列 ...

  3. JavaScript的7大基本类型

  4. django-session的使用---文件session型

    3.文件Session a. 配置 settings.py       SESSION_ENGINE = 'django.contrib.sessions.backends.file'    # 引擎 ...

  5. mysql你问我答

    1.尊敬的先生,请您谈谈mysql数据库的引擎 数据库中的表设定了什么存储引擎,那么该表在数据存储方式.数据更新方式.数据查询性能以及是否支持索引等方面就会有不同的“效果”. mysql引擎大致分两类 ...

  6. 适配器模式(Adapter)---结构型

    1 基础知识 定义:将一个类的接口(被适配者)转换成客户期望的另一个接口(目标).特征:使原本接口不兼容的类可以一起工作. 本质:转换匹配,复用功能.把不兼容的接口转换为客户端期望的样子从而实现功能的 ...

  7. 第二章 Unicode简介

    /*------------------------------------------------------------- screensize.cpp -- Displays screen si ...

  8. Friend-Graph (HDU 6152)2017中国大学生程序设计竞赛 - 网络选拔赛

    Problem Description It is well known that small groups are not conducive of the development of a tea ...

  9. c 判断一个字符是否为字母

    #include <stdio.h> #include <wctype.h> int main () { ; wchar_t str[] = L"C++"; ...

  10. Python基础之enumerate枚举

    枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表,字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值. 1. 第一种类型 lst = ["a&quo ...