路由
装饰器 @app.route()
告诉 Flask
哪个 URL
才能触发我们的函数。这也就是路由.
之后 ,定义一个函数,该函数名也是用来给特定函数生成 URLs,并且返回我们想要显示在用户浏览器上的信息。
from flask import Flask,request,url_for
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route('/user', methods=['GET'])
def hello_user():
return 'hello user'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
路由的本质
路由的本质,是URL
绑定, @app.route()
装饰器用于把一个函数绑于一个URL
上,如上,/
绑定了hello_world()
函数,/user
绑定了hello_user()
函数
路由变量规则
给 URL 增加变量的部分,把一些特定的字段标记成 。这些特定的字段将作为参数传入到你的函数中。当然也可以指定一个可选的转换器通过规则 。
@app.route('/users/<id>',methods=['GET'])
def user_id(id):
'''
请求地址为http://127.0.0.1:5000/users/123
http://127.0.0.1:5000/users/weixuan
'''
return 'hello user:'+id
- 1
- 2
- 3
- 4
- 5
- 6
- 7
参数形式的url
@app.route('/query_user')
def query_user():
'''
http://127.0.0.1:5000/query_user?id=123
'''
id = request.args.get('id')
return 'query user:'+id
- 1
- 2
- 3
- 4
- 5
- 6
- 7
反向路由
本质是根据函数名反向生成url,使用函数 url_for()
来针对一个特定的函数构建一个 URL。它能够接受函数名作为第一参数,以及一些关键字参数, 每一个关键字参数对应于 URL 规则的变量部分。未知变量部分被插入到 URL 中作为查询参数。
# -*- coding: utf-8 -*-
from flask import Flask,request,url_for
@app.route('/test')
def query_user():
'''
http://127.0.0.1:5000/test?id=123
'''
id = request.args.get('id')
return 'query user:'+id
@app.route('/query_url')
def query_url():
'''
反导出 query_user函数名对应的url地址
'''
return 'query url:'+url_for('query_user')
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
请求地址http://127.0.0.1:5000/query_url
,之后,打印的是 query url:/test