flask解决sqlalchemy的model键值对序列化
我们使用flask进行开发,对于ajax或者前后端分离的json系列化问题,总是很令人头秃
我主要是使用表格渲染(layui)
在其他语言框架中,一个函数即可完成sql查询结果的键值对序列号
对于flask-sqlalchemy的结果,(‘201814010101’, ‘田涵’)它是一个list类型,
即使我们通过
result = {
#
# "code": 0,
# "msg": "",
# "count": count,
# "data": stu.items,
# "column": 'false',
# "offset": 0,
# }
return jsonify(result)
强行拼json,但是不是键值对,前端真的通过rows.0???rows[0}处理???
想了很久也查了很多博客也没有解决问题,很多人说写个方法进行遍历,使用__dict__方法序列化再把sqlalchemy的内置方法pop掉,都不是很好的解决方案。
后来我看了flask-restful的文档,从中找到了marshal方法
from flask_restful import Api,Resource,fields,marshal_with
from app import api
from models import Student
class IndexView(Resource):
resource_fields = {
'Sno': fields.String,
'name': fields.String,
'sex': fields.String
}
@marshal_with(resource_fields)
def get(self):
mod = Student.query.first()
return mod
然后也可以继续使用flask-login的@login_required 修饰器
!
搞定,可以和layui放飞了