參考了網上很多資料,自己搞了一個適合的
在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
https://www.cnblogs.com/eating-gourd/p/9997751.html