视图函数返回响应,有三种方式
- 使用,jsonify,生成json数据响应体
- 使用,redirect,url_for,生成文本响应体
- 直接响应,字符串,自定义状态码,返回文本响应体
一.使用jsonify,生成json数据响应体
# 生成json数据响应体
@app.route('/demo4')
def demo4():
json_dict = {
"user_id": 10,
"user_name": "laowang"
}
return jsonify(json_dict)
二.使用redirect,url_for,生成文本响应体
- redirect重定向到 黑马 官网
格式: redirect('地址');
地址: 可以是外链地址, 可以是视图函数地址
# 重定向
@app.route('/demo5')
def demo5():
return redirect('http://www.itheima.com')
- url_for反解析:通过视图函数的名称,返回地址
格式: url_for('视图函数名',key=value)
提示: url_for经常配合redirect使用,可以传递参数 ```python @app.route('/demo1') def demo1(): return 'demo1'
重定向
@app.route('/demo5') def demo5(): return redirect(url_for('demo1'))
- 重定向到视图函数,携带参数演示
```python
# 路由传递参数
@app.route('/user/<int:user_id>')
def user_info(user_id):
return 'hello %d' % user_id
# 重定向
@app.route('/demo5')
def demo5():
# 使用 url_for 生成指定视图函数所对应的 url
return redirect(url_for('user_info', user_id=100))
三.返回字符串,自定义状态码,返回文本响应体
- 在 Flask 中,可以很方便的返回自定义状态码,以实现不符合 http 协议的状态码,例如:status code: 666
@app.route('/demo6') def demo6(): return '状态码为666', 666