【问题标题】:Flask RESTful api put errorFlask RESTful api 放置错误
【发布时间】:2015-12-26 14:47:37
【问题描述】:

我有一个 Post 模型如下 -

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    likes = db.Column(db.Integer)
    body = db.Column(db.Text)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def __init__(self, body, user_id):
        self.likes = 0
        self.body = body
        self.user_id = user_id

我无法使用 PUT 请求更新对象。这是我的代码 -

class UserPost(Resource):
    def get(self, post_id):
        print(post_id)
        return marshal(Post.query.get(post_id), post_fields)

    def put(self, post_id):
        post = Post.query.get_or_404(post_id)
        args = post_parser.parse_args()
        print args
        for k, v in args.iteritems():
            if v is not None:
                post.__dict__[k] = v

                db.session.add(post)
                db.session.commit()
        return marshal(post, post_fields)

Post 对象未更新。

【问题讨论】:

  • 你试过了吗:@app.route('/path', methods=['PUT', 'POST'])
  • 无错误,对象不更新,返回旧对象。
  • @Valijon put 请求正在运行。更新不起作用。
  • 也许v 是一个空字符串?在这种情况下,is not None 检查将失败。
  • 不,我已经用调试器检查过了,v 不是空白的。事实上,该对象已临时更新,但并未以某种方式保存。

标签: python flask flask-restful


【解决方案1】:

不要手动更新post.__dict__,而是使用setattr

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多