所有返回前台的内容其实都应该是 Response
的对象或者其子类,我们看到如果返回的是字符串直接可以写成 return ‘字符串’
的形式,但是其实这个字符串也是经过了Response
包装的:return Response('字符串')
返回字符串:
# 返回一个字符串
@app.route('/str')
def fn1():
return '返回一个str字符串'
#最后字符串会被flask包装成如下形式
return Response('返回一个str字符串') # Response模块需要导入
返回response对象:
# 返回一个response对象,
from flask import make_response # 导入make_response模块
@app.route('/response')
def fn1():
r = render_template('html.html')
response = make_response(r,200) # 接受2个参数,第一个参数为:模板或者字符串,第二个参数为:状态码
print(response) # <Response 280 bytes [200 OK]>
print(type(response)) # <class 'flask.wrappers.Response'>
return response
返回字典或元祖、列表等:
使用jsonify模块,首先导入该模块,使用jsonify把字典转化为json字符串:
from flask import jsonify
@app.route('/dict')
def fn1():
r = jsonify({'name':'lxc','age':20})
return r
以上都可以返回一个状态码,作为第二个参数。。。
abort()
需要导入abort模块,终止响应的意思,通常会在参数中写403:
from flask import abort
@app.route('/list')
def fn():
d = jsonify({'name':'lxc','age':20})
l = jsonify([1,2,3])
t = jsonify(('1,2,3','abc'))
abort(403)
return t
'''
当访问该路径时,会报错
You don't have the permission to access the requested resource. It is either read-protected or not readable by the server.
意思是:您没有访问所请求资源的权限。它要么是受读保护的,要么是服务器不可读的。
'''
json.dumps( ) 和 jsonify ( ) 区别
( 1 ) jsonify 将数据格式转化为json格式,同时设置返回类型为:application/json
( 2 ) json.dumps ( ) 将数据格式转化为json格式,没有设置返回的数据类型,默认类型是:text/html