路由的基本定义
客户端(如Web浏览器)把请求发送给Web服务器,Web服务器再把请求发送给Flask程序实例。程序实例需要知道每个URL请求运行哪些代码,所以保存了一个URL到Python函数的映射关系。处理URL和函数之间关系的程序称为路由。在Flask中定义路由最简单的方式,是使用程序实例提供的app.route
修饰器,把修饰的函数注册为路由。这个函数也称为视图函数(view function)。视图函数是用来处理服务端路由请求的程序,其返回的值称为响应,是客户端接收到的内容。
指定路由地址
# 指定访问路径为`/demo1`
@app.route('/demo1')
def demo1():
return 'demo1'
给路由传数
有时我们需要将同一类 URL 映射到同一个视图函数处理,比如:使用同一个视图函数来显示不同用户的个人信息。
# 路由传递参数
@app.route('/user/<user_id>')
def user_info(user_id):
return 'hello %s' % user_id
- 路由传递的参数默认当做 string 处理,也可以(通过路由转换器)指定参数满足的类型
# 路由传递参数
@app.route('/user/<int:user_id>')
def user_info(user_id):
return 'hello %d' % user_id
说明:
- 这里指定int,尖括号中的内容是动态的,在此暂时可以理解为接受 int 类型的值,实际上 int 代表使用 IntegerConverter转换器 去处理 url 传入的参数.关于路由转换器点击这里去了解
指定请求的方式
在 Flask 中,定义一个路由,默认的请求方式为:
- GET
- OPTIONS(自带)
- HEAD(自带)
其中的HEAD和OPTIONS方法由Flask自动处理。
如果想添加请求方试,那么可以如下指定:
@app.route('/demo2', methods=['GET', 'POST'])
def demo2():
# 直接从请求中取到请求方式并返回
return request.method
说明:
- 通过指定参数methods的值可以指定请求的方式,上面的既可以支持GET请求也支持POST请求;
- 通过
app.url_map
可以查看视图函数可以支持的几种请求方式及路由的映射关系