![](/img/trans.png)
[英]Why is Flask checking `'\\/' in json.dumps('/')` in its json module?
[英]Why is json.dumps() a must in Flask?
(这可能是一个愚蠢的问题,所以请穿上你的愚蠢盾牌!)我是一名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的回应。 为什么不在Flask中return 1
工作呢?
Flask视图应该返回的逻辑在文档中有详细描述:
视图函数的返回值会自动转换为响应对象。 如果返回值是一个字符串,则将其转换为响应对象,其中字符串为响应正文,200 OK错误代码和text / html mimetype。 Flask应用于将返回值转换为响应对象的逻辑如下:
如果返回了正确类型的响应对象,则直接从视图返回。
如果是字符串,则使用该数据和默认参数创建响应对象。
如果返回元组,则元组中的项可以提供额外信息。 这样的元组必须采用(响应,状态,标题)形式,其中至少有一个项目必须在元组中。 状态值将覆盖状态代码,标头可以是其他标头值的列表或字典。
如果这些都不起作用,Flask将假定返回值是一个有效的WSGI应用程序并将其转换为响应对象。
在您的情况下,返回整数1
- Flask应用最后一个规则并尝试将其转换为响应对象并失败。 在内部, make_response()
方法 ,如果是整数,则调用werkzeug.Response
类的force_type()
方法 ,该类最终在尝试实例化WSGI应用程序时无法创建BaseResponse
类的实例:
app_rv = app(environ, start_response)
在你的情况下, app
是整数1
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.