1.优化状态响应信息原因

def post(self):name = request.form.get('name')pwd= request.form.get('pwd')real_pwd = request.form.get('real_pwd')nick_name = request.form.get('nick_name')phone = request.form.get('phone')email = request.form.get('email')# 验证数据的正确性if not all([name,pwd,real_pwd]):return {'status':10000,'msg':'数据不完整'}if len(name)<2:return {'status':10011,'msg':'用户名不合法'}if len(pwd)<2:return {'status':10012,'msg':'密码不合法'}if pwd != real_pwd:return {'status':10013,'msg':'两次密码不一致'}# 正则表达式验证手机号和邮箱# ^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$if not re.match(r'^1[35789]\d{9}$',phone):return {'status':10014,'msg':'手机号不合法'}if not re.match(r'^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$',email):return {'status':10015,'msg':'邮箱不合法'}# 由于可能在数据库中会抛出异常,还是得做一个尝试try:# 提交数据# 注意这里的密码要加密处理,不可以直接返回给保存到数据库中得变量pwd,返回给函数passwordusr = models.User(name=name, password = pwd, nick_name = nick_name, phone = phone,email = email)db.session.add(usr)db.session.commit()return {'status':200,'msg':"成功!"}except Exception:return {'status':2000,'msg':'异常错误'}

例如本段代码,响应信息重复,并且,这样写的代码可读性很差。可以单独创建一个文本用作存储响应信息。

2.操作方法

2.1 创建一个存储响应信息的文件

flask_shop/utils工具文件夹下创建一个messages.py文件

# utils 用于存放一些工具类
# flask_shop/utils/message.py
# 此文件用于存放响应信息status_msg = {200:'成功!',2000:'异常错误',10000:'数据不完整',10001:'登录功能',10011:'用户名不合法',10012:'密码不合法',10013:'两次密码不一致',10014:'手机号不合法',10015:'邮箱不合法'
}# 转成字典形式
def to_dict_msg(status=200, data=None, msg=None):return{'status':status,'data':data,'msg':msg if msg else status_msg.get(status) # 若有传递状态码就使用,没有就去status_msg里面找}# 用作测试
# if __name__ == '__main__':
#     print(to_dict_msg(status=10000))

2.2修改请求响应信息

# flask_shop/user/view.py
# 此文件用于处理关于用户的业务逻辑,视图都写在这# 导入用户的蓝图对象,这里的user不是文件,是在user.py定义好的蓝图对象
from flask import request
from flask_shop.user import user,user_api
from flask_shop import models,db
from flask_restful import Resource
import re
from utils.message import to_dict_msg@user.route("/")
def index():return "Hello user"# 用flask_restful实现登录功能
# 使用flask_restful 必须继承Resource类
class User(Resource):# get请求访问def get(self):pass# post请求访问    def post(self):name = request.form.get('name')pwd= request.form.get('pwd')real_pwd = request.form.get('real_pwd')nick_name = request.form.get('nick_name')phone = request.form.get('phone')email = request.form.get('email')# 验证数据的正确性if not all([name,pwd,real_pwd]):return to_dict_msg(10000)if len(name)<2:return to_dict_msg(10001)if len(pwd)<2:return to_dict_msg(10012)if pwd != real_pwd:return to_dict_msg(10013)# 正则表达式验证手机号和邮箱# ^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$if not re.match(r'^1[35789]\d{9}$',phone):return to_dict_msg(10014)if not re.match(r'^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$',email):return to_dict_msg(10015)# 由于可能在数据库中会抛出异常,还是得做一个尝试try:# 提交数据# 注意这里的密码要加密处理,不可以直接返回给保存到数据库中得变量pwd,返回给函数passwordusr = models.User(name=name, password = pwd, nick_name = nick_name, phone = phone,email = email)db.session.add(usr)db.session.commit()return to_dict_msg(200)except Exception:return to_dict_msg(2000)# flask_restful注册路由地址
user_api.add_resource(User,'/user')# 后端登录的实现
# 使用get请求不安全
@user.route('/login',methods=['POST'])
def login():# 从前端输入框中获取,此时还没写前端使用postman测试name = request.form.get('name')pwd= request.form.get('pwd')# 判断两个是否为非空值if not all([name,pwd]):return {'status':10000,'msg':'数据不完整'}if len(name) > 1:# SQLALCHEMY查询语句:获取用户字段,得到实例对象usr = models.User.query.filter_by(name =name).first()if usr:# 调用usr视图中的验证蓝图if usr.check_password(pwd):return {'status':200,'msg':"登录功能"}return {'status':10001,'msg':'用户名或密码错误'}#防止用户暴力测试

10.(后端)响应信息优化相关推荐

  1. typeorm mysql_从零搭建项目 (10) --- 后端: 使用 TypeORM 和 MySQL

    从零搭建项目 (10) --- 后端: 使用 TypeORM 和 MySQL 我的博客地址 正式地址 测试地址 前端源码 后端源码 文章目录 项目及其技术栈介绍 前端: 项目初始化 前端: 使用 Sa ...

  2. 10年+SQL性能优化专家谈SQL等价改写核心思想

    墨墨导读:2020数据技术嘉年华于11月21日落下帷幕,大会历时两天,来自全国各地的数据领域学术精英.领袖人物.技术专家.从业者和技术爱好者相聚北京,见证了个人的快速成长.技术的迭代进步.行业的蓬勃发 ...

  3. springboot+aop切点记录请求和响应信息

    本篇主要分享的是springboot中结合aop方式来记录请求参数和响应的数据信息:这里主要讲解两种切入点方式,一种方法切入,一种注解切入:首先创建个springboot测试工程并通过maven添加如 ...

  4. IW会话参数、请求信息、及其响应信息

    目录 IW会话参数.请求信息.及其响应信息 一.IW新会话参数 1.MS Edge浏览器: 2.Delphi FMX APP: 二.IW请求信息-App客户端 三.IW请求信息及其响应信息-App客户 ...

  5. 经典网页设计:10个响应式设计的国外购物网站

    今天我想与大家分享电子商务主题的网站设计,更精确地说是为设计在线商店提供新思想.每个人都知道移动技术的市场发展迅速,已经很难找到一个人没有手机的人了.响应设计给我们提供了一个巨大的机遇:站点的访问量的 ...

  6. Vue+Spring boot前后端响应流程总结

    Vue+Spring boot前后端响应流程总结 前端请求页面路径,首先会经过路由: 经过解决跨域问题以后,就会请求到后端接口,后端接口返回的数据会封装到then回调方法的res参数中. 经过回调函数 ...

  7. Flask框架(flask中设置响应信息的方法,返回json数据的方法)

    设置响应信息的方法 1.  返回自定义的响应头,有两种方式: (1)  第一种是:视图函数return的时候,使用元组,返回自定义的信息           返回的时候的状态码可以自定义信息:&quo ...

  8. C# 10 新特性 —— Lambda 优化

    C# 10 新特性 -- Lambda 优化 Intro C# 10 对于 Lambda 做了很多的优化,我们可以在 C# 中更加方便地使用委托和 Lambda 了,下面就来看一些示例 Lambda ...

  9. .NET Core授权失败如何自定义响应信息?

    [导读]在.NET 5之前,当授权失败即403时无法很友好的自定义错误信息,以致于比如利用Vue获取到的是空响应,不能很好的处理实际业务,同时涉及到权限粒度控制到控制器.Action,也不能很好的获取 ...

最新文章

  1. AndroidApplication优化解耦
  2. 409 Longest Palindrome
  3. 很基本的权限功能小结
  4. Apache Beam的API设计
  5. c++餐饮管理系统_扎哈·哈迪德建筑事务所赢得深圳湾超级总部基地C塔项目国际竞赛...
  6. 隐藏右侧“快速启动栏”中的回收站图标及查看所有网站内容
  7. Linux iostat和vmstat命令
  8. 2013蓝桥杯C++B:错误票据
  9. sqoop遇到的问题
  10. mysql忽略大小写 chmod_Ubuntu18.04下Mysql8.0.15关闭大小写敏感
  11. CanBus的数据帧的获取和初始解析
  12. 计算机类调研报告选题,大学生调研报告选题精选.doc
  13. python 百度ai json解析_百度AI接口调用
  14. 控件的颜色设置(本景色,文本色,文本背景色)
  15. 对SingleTask和TaskAffinity的理解
  16. Spin和Promela复习
  17. IOS UIView详解
  18. 【转载】文化的基本单位:模因
  19. (更新时间)2021年6月4日 商城高并发秒杀系统(.NET Core版) 30-lua文件封装加载和执行
  20. 使用-cifs自动挂载

热门文章

  1. PM01-项目立项阶段-02-范围说明书
  2. xp 自带超级终端的添加
  3. 【自定义CPU占用率】
  4. 电子--软件--电子(嵌入式)--学习之路断得漫长
  5. 【Spring Boot】Spring Boot 2.x + Spring Security OAuth2 2.3.3 出现 bad client credentials 错误的踩坑记录
  6. 苹果Mac系统快捷键 mac新手必看
  7. 微赞config.修改php,微信公众号第三方平台 微赞WZ_V100.0版20170612整合包 整合人人商城V2新版+一键升级...
  8. 一次腾讯云centos服务器被入侵的处理
  9. 有效解决电脑摄像头和麦克风无法使用的问题
  10. 工期概率计算_如何从文本和数字单元格值计算工期