当前位置:  开发笔记 > 编程语言 > 正文

为什么json.dumps()必须在Flask中使用?

如何解决《为什么json.dumps()必须在Flask中使用?》经验,为你挑选了1个好方法。

(这可能是一个愚蠢的问题,所以请穿上你的愚蠢盾牌!)我是一名PHP程序员,现在正在学习Python + Flask.我最近不得不通过AJAX发布数据并返回响应而苦苦挣扎.最后,有效的代码是:

@app.route('/save', methods=['POST'])
def save_subscriptions():
    if request.method == 'POST':
        sites = request.form.get('selected')
        print(sites)
        sites = sites[0:-1]        
        g.cursor.execute('UPDATE users SET sites = %s WHERE email = %s', [sites, session.get('email')])
        g.db.commit()
        return json.dumps({'status': 'success'})

如果我改成了return json.dumps({'status': 'success'}),return 1我会得到一个例外int is not callable.首先,我不明白是谁试图称之为,int为什么?其次,在PHP中,经常可能只是echo 1;这将成为AJAX响应.那为什么不在return 1Flask中工作?



1> alecxe..:

Flask视图应该返回的逻辑在文档中有详细描述:

视图函数的返回值会自动转换为响应对象.如果返回值是一个字符串,则将其转换为响应对象,其中字符串为响应正文,200 OK错误代码和text/html mimetype.Flask应用于将返回值转换为响应对象的逻辑如下:

如果返回了正确类型的响应对象,则直接从视图返回.

如果是字符串,则使用该数据和默认参数创建响应对象.

如果返回元组,则元组中的项可以提供额外信息.这样的元组必须采用(响应,状态,标题)形式,其中至少有一个项目必须在元组中.状态值将覆盖状态代码,标头可以是其他标头值的列表或字典.

如果这些都不起作用,Flask将假定返回值是一个有效的WSGI应用程序并将其转换为响应对象.

在您的情况下,1返回整数- Flask应用最后一个规则并尝试将其转换为响应对象并失败.在内部,调用make_response()方法,在整数的情况下,将调用类的force_type()方法,在尝试实例化WSGI应用程序时werkzeug.Response最终将无法创建BaseResponse类的实例:

app_rv = app(environ, start_response)

其中,app你的情况是整数1.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有