从JSON到和从JSON转换的Flask

2024-05-21 14:39:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究一个Flask示例,它获取博客文章并通过RESTful服务将它们添加到数据库中。在

在实施RESTful服务之前,我通过执行以下操作将博客文章添加到本地数据库:

@main.route('/', methods=['GET', 'POST'])
def index():
    form = PostForm()
    if current_user.can(Permission.WRITE_ARTICLES) and \
            form.validate_on_submit():
        post = Post(body=form.body.data,
                    author=current_user._get_current_object())
        db.session.add(post)
        return redirect(url_for('.index'))

现在我已经了解了RESTful服务部分,下面的to_json()和{}函数已经用于Post模型:

^{pr2}$

以下内容将在数据库中插入新的博客文章:

//POST resource handler for posts
@api.route('/posts/', methods=['POST'])
@permission_required(Permission.WRITE_ARTICLES)
def new_post():
    post = Post.from_json(request.json)
    post.author = g.current_user
    db.session.add(post)
    db.session.commit()
    return jsonify(post.to_json()), 201, \
        {'Location': url_for('api.get_post', id=post.id, _external=True)}

如果有人能解释一下这些功能是如何相互作用的,我将不胜感激。我对这一切的理解是,在客户机设备上键入一篇博客文章,为了将其发送到web服务,调用to_json函数将帖子转换为JSON。一旦web服务接收到博客文章的JSON版本,就会调用from_json函数将JSON帖子转换回其原始状态。对吗?在

编辑: 只要重读这一页,我想我的理解与实际发生的事情是相反的。为了从web服务获取博客文章,调用to_json函数将数据转换为JSON。然后在客户端,调用from_json函数将数据从JSON转换回来。在


Tags: to函数formrestful数据库jsondbsession
1条回答
网友
1楼 · 发布于 2024-05-21 14:39:10

你的编辑是正确的。restapi的常见响应格式是JSON,这就是为什么返回时响应被转换为JSON。在

还有一个用于向restapi发送数据的公共头是application/json,这就是代码将接收到的数据“从JSON”转换的原因。在

相关问题 更多 >