Flask 的Response常用操作
服务器返回给客户端的数据
由程序员创建,返回Response对象
1. 直接返回字符串, 可以返回文本内容,状态码
2. render_template 渲染模板,将模板转换成字符串
3. 通过make_response(data,code)
- data 返回的数据内容
- code 状态码
4. 返回Response对象
举例
'''
index.html内容:
<body>
<h2>首页</h2>
<hr>
<p>{{ name }}</p>
<p>{{ age }}</p>
</body>
'''
@blue.route('/getresponse/')
def get_response():
#1.直接返回字符串
return "response ok"
#结果:response ok
#2.render_template 渲染模板,将模板转换成字符串
#return render_template('index.html')#报错,一定要保证templates与当前文件在同一目录下
return render_template('index.html', name="zhangsan")#将static与template文件夹复制到App下
#结果:得到一个html字符串化后的结果
'''
......
<body>
<h2>首页</h2>
<hr>
<p>zhangsan</p>
<p></p>
</body>
</html>
'''
#3.传参方式 + 2中的操作
params = {
"name":"zhangsan",
"age":33
}
return render_template('index.html', **params)
#得到的也是与2中类似的结果
#4.在3的基础上,使用jsonify返回json序列化的结果
return jsonify(params)
#结果{
"age": 33,
"name": "zhangsan"
}
#5. 通过make_response(data,code)
res = render_template('index.html', **params)#渲染模板,将模板转换成字符串
print(res,type(res))#res是一个HTML字符串,类型<class 'str'>
#6.response = Response(res)
print(response,type(response))#Response对象
# < Response246bytes[200OK] >
# < class 'flask.wrappers.Response'>
重定向
redirect()#视图中,调用其他函数
url_for(‘函数名’,参数=value)#HTML中,调用其他函数
举例
@blue.route('/makeredirect/')
def make_redirect():
# return redirect('http://www.qq.com')#网址跳转到腾讯首页
#return redirect('/getresponse/')#跳转到上面内容的页面
#url_for('蓝图名称.视图函数名称')
return redirect(url_for('user.get_fruit',fruit="apple"))#结果apple
# 相当于=>Django中redirect(reverse())
终止执行, 抛出异常
主动终止 abort(code)
举例
@blue.route('/abort/')
def make_abort():
abort(403)
return "error"
捕获异常
@app.errorhandler(404)
def hello(e):
return ‘LOL’