我正在使用flask、flask-mongoengine和Flask-marshmallow构建API。当我尝试使用marshmallow返回我的数据库数据时,我得到了'unhashable type dict‘错误。
这是我的模型:
from app import db
class Post(db.Document):
title = db.StringField(max_length=128)
body = db.StringField()这是我的观点:
from flask import jsonify
from app import ma
from app.models import Post
class PostSchema(ma.Schema):
class Meta:
fields = ('title', 'body')
post_schema = PostSchema()
posts_schema = PostSchema(many=True)
@mod_post.route('/post/')
def post():
all_post = Post.objects
print(all_post)
result = posts_schema.dump(all_post)
return jsonify(result)
...我在这里遵循棉花糖教程:http://flask-marshmallow.readthedocs.org/en/latest/
但是,不幸的是,错误发生了。有什么建议吗?
发布于 2016-12-01 09:18:17
详细的错误消息会有所帮助。从我立即看到的是,您获得了Schema.dump的结果并将其传递给jsonify(),但result实际上是一个转储数据和错误的元组。你应该从这样做开始:
result, errors = posts_schema.dump(all_posts)
if errors:
return jsonify({'error': errors.messages})
return jsonify(result)然后,您可以添加代码来说明转储错误。
发布于 2017-10-24 17:14:34
只需更改一个返回值:return posts_schema.dump(all_post, many=False)[0], 201
https://stackoverflow.com/questions/35065128
复制相似问题