def post(self): args = channel_parser.parse_args() channel = Channel() channel.name = args['name'] channel.sort = args['sort'] db.session.add(channel) db.session.commit() return channel, 201
def channel_list(): if request.method == 'POST': """ POST /channels {"name": "科技", "sort": 1} 注意 postman/前端 在向服务器提交 json 数据时,需要声明提交的类型 在 请求的 headers 增加 content-type: application/json flask 在确认请求数据是通过 json 提交之后,会将 json 字符串转换成 字典,保存在 request.json 中 """ # print(request.data) # print(request.json) if 'name' not in request.json or 'sort' not in request.json: return abort(400) channel = Channel() channel.name = request.json['name'] channel.sort = request.json['sort'] db.session.add(channel) db.session.commit() return jsonify({'channel': channel.to_dict()}), 201 # 数据库查询返回的是 list 类型的数据 _channels = Channel.query.all() channels = [channel.to_dict() for channel in _channels] # flask 视图函数只能返回 str 或 response 对象 # 我们可以将数据库查询出来的数据 转换成 json,以满足 flask 视图函数的返回要求 ret = {'channels': channels} # import json # json_str = json.dumps(ret) # return json_str return jsonify(ret), 200