分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

32、Flask实战第32天:优化json数据的返回

发布时间:2023-09-06 02:09责任编辑:彭小芳关键词:jsjson

接着上节,我们通过jsonify返回json数据非常方便

... return jsonify({"code": 400, "message": message})

返回什么数据则是公司接口编写的规范

返回值的规范(就算值为空,我们也必须返回以下字段)

{ ?"code": 200, ??#状态码 ?"message": "", ?#信息提示 ?"data": {}, ?#返回的数据,比如文章列表等等}

状态码的规范

200:成功401:没有授权400:参数错误500:服务器错误

前面,我们每一次返回json数据需要写一串"jsonify({"code": 400, "message": message})"这样很麻烦,二期项目后期可能还有很多地方需要返回json。因此我们可以把它抽取出来进行封装成一个工具

1、先在项目下面建一个python package命名为utils(工具包,以后项目的工具都写在这里面)

2、在utils.py下新建restful.py

from flask import jsonifyclass HttpCode(object): ???ok = 200, ???unauth_error = 401 ???param_error = 400 ???server_error = 500def resetful_result(code, message, data): ???return jsonify({"code": code, "message": message, "data":data or {}})

这样,我们就可以在视图返回json的时候这样用:

from utils import restful...return restful.resetful_result(code=200, message=‘‘, data={})

但是这样依然不够方便,我们还是需要加上3个参数。因此我们继续改造resetful.py

from flask import jsonifyclass HttpCode(object): ???ok = 200, ???unauth_error = 401 ???param_error = 400 ???server_error = 500def resetful_result(code, message, data): ???return jsonify({"code": code, "message": message, "data":data or {}})def success(message="", data=None): ???return resetful_result(code=HttpCode.ok, message=message, data=data)def unauth_error(message="", data=None): ???return resetful_result(code=HttpCode.param_error, message=message, data=data)def param_error(message="", data=None): ???return resetful_result(code=HttpCode.param_error, message=message, data=data)def server_error(message="", data=None): ???return resetful_result(code=HttpCode.server_error, message=message, data=data)

这样,我们只要根据不同的情况使用定义好的函数就行了。

参数: code(已经不用自己传了),message(成功的状态下可以不传,默认为空),data(没有传此参数,也会自动为空字典))

把上节内容的代码,可以写成如下:

from utils import restful...class ResetPwdView(views.MethodView): ???decorators = [login_required] ?#修改密码也要先登录,这是类视图使用装饰器 ???def get(self): ???????return render_template(‘cms/cms_resetpwd.html‘) ???def post(self): ???????resetpwd_form = ResetPwdForm(request.form) ???????if resetpwd_form.validate(): ???????????oldpwd = resetpwd_form.oldpwd.data ???????????newpwd = resetpwd_form.newpwd.data ???????????user = g.cms_user ???????????if user.check_password(oldpwd): ???????????????user.password = newpwd ???????????????db.session.commit() ???????????????return restful.success() ?#可以什么都不传 ???????????else: ???????????????return restful.unauth_error(‘原密码错误‘) ?#只第一个参数message ???????else: ???????????message = resetpwd_form.get_error() ???????????return restful.param_error(message) ?#只第一个参数message

32、Flask实战第32天:优化json数据的返回

原文地址:https://www.cnblogs.com/sellsa/p/9439908.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved