参考了网上很多资料,自己搞了一个适合的
在model 内增加一个函数:
class User(db.Model): __tablename__ = 'user' userid = db.Column(INTEGER(11), primary_key=True, comment='用户ID') phone_title = db.Column(CHAR(10), comment='电话抬头') phone = db.Column(INTEGER(50), comment='用户电话') account = db.Column(db.String(255), primary_key=True, comment='用户账户,备注:用户可以使用其他方式登录,但是在系统必须拥有自己的账户') email = db.Column(db.String(255), comment='用户邮箱') name = db.Column(CHAR(60), comment='用户名称') password = db.Column(db.String(255)) token = db.Column(VARCHAR(255), comment='用户登录验证') pre = db.Column(db.String(255), comment='用户个人介绍') c_time = db.Column(DateTime, comment='用户创建时间') photo = db.Column(db.String(255), comment='用户头像保存路径') login_time = db.Column(DateTime, comment='用户最后登录时间') status = db.Column(INTEGER( 1), comment='账户状态:\r\n0、正常\r\n1、冻结\r\n2、过期\r\n3、未激活(未分配团队)\r\n') type = db.Column(db.String(255), comment='用户类型:0、app用户 1、后台用户 2、第三方用户') accountType = db.Column(INTEGER(11), comment='用户类型2:0、超级管理员 1、后台用户 2、普通用户') def to_json(self): # --------------------- dict = self.__dict__ if "_sa_instance_state" in dict: del dict["_sa_instance_state"] return dict
接口调用:
from app.model import User from app import db, js_ret from flask import Blueprint, request, make_response, Response, render_template, url_for, current_app as lg session = db.session users = Blueprint('users', __name__, url_prefix='/users') @users.route('/', methods=['POST', 'get']) def us(): """ 查询用户列表 type:查询用户类型 page_number:每页条数 page_index : 页码 token:操作人token c_time:操作时间 """ page_number = request.form.get('page') page_index = request.form.get('page_index') user_list = User.query.paginate(1,2,False) de = [] for i in user_list.items: de.append(i.to_json()) return js_ret(0,'',de)
然后使用jsonify 方法转换一下格式:
from flask import jsonify def js_ret(code = None,msg = None,data = None): """ return json 返回参数处理 code :状态码 data:返回结果 """ rt_data = { "code":code, "msg":msg, "data":data } jss = jsonify(rt_data) return make_response(jss,200)
还有就是日期格式的问题,jsonify 转换的日期格式默认是 http格式,我是直接改了一下源码使用,不推荐使用这种方式,
如果不想使用jsonify的话,直接定义一个函数,对json.dumps方法传参就好,两种方式并没有太大的区别:
区别:https://blog.csdn.net/kun1280437633/article/details/80377734
def json_serial(obj): # 处理日期格式问题 """JSON serializer for objects not serializable by default json code""" if isinstance(obj, (datetime, date)): if isinstance(obj,datetime): return obj.strftime("%Y-%m-%d %H:%M:%S") else: return obj.soformat() raise TypeError ("Type %s not serializable" % type(obj)) # print (dumps(datetime.now(), default=json_serial)) def js_ret(code = None,msg = None,data = None): """ return json 返回参数处理 code :状态码 data:返回结果 """ rt_data = { "code":code, "msg":msg, "data":data } jss = jsonify(rt_data) return make_response(jss,200)
其他方案:
https://blog.csdn.net/liu_xing_hui/article/details/8956107