路由和视图
什么是路由?可以理解成把访问的URL绑定到自定义的方法或函数上,这个函数叫做视图函数。当访问我们的URL链接时,就会按照写好的函数去执行动作。
静态路由
我们使用route装饰器来把URL绑定到视图函数上。
1 2 3
| @app.route('/hello') def index(): return '<h1>42Team</h1>'
|
当用户要访问/hello
时,就会进入到index()
方法,将由h1
标签包裹的42Team文本返回。
动态路由
和静态路由相对,上一段代码中,只有用户在访问/hello
的时候才会进入到index()方法中执行,而我们访问网页时能看到很多部分地址是可变的,这就是动态路由。
1 2 3
| @app.route('/say_<name>') def say_name(name): return '<h1>My name is {}</h1>'.format(name)
|
路由 URL 中放在尖括号里的内容就是动态部分,任何能匹配静态部分的 URL 都会映射到这个路由上。调用视图函数时,Flask 会将动态部分作为参数传入函数。在这个视图函数中,name 参数用于生成个性化的欢迎消息。
你也可以指定不同的数据类型映射到不同的函数上。有string,int,float,path类型。path类型有点特殊,它可以包含/
正斜线,默认类型为。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| @app.route('/say_<string:chars>') def say_string(chars): return '<h1>String is {}</h1>'.format(chars)
@app.route('/say_<int:num>') def say_num(num): return '<h1>Int Num is {}</h1>'.format(num)
@app.route('/say_<float:long>') def say_float(long): return '<h1>Long Float Num is {}</h1>'.format(long)
@app.route('/say_<path:inputs>') def say_path(inputs): return '<h1>Path is {}</h1>'.format(inputs)
|