Flask路由
Flask是较为热门的用python编写的Web应用框架,它能够根据路由自动将请求分配给对应的函数,使得程序员能够专注于功能,而不是繁琐的底层协议
Flask示例
下面的代码创建了一个Flask应用,并返回一个欢迎页面
1 2 3 4 5 6 7 8 9
| from flask import Flask, render_template app = Flask(__name__) @app.route('/') def main_web(): return 'hello world' if __name__ == '__main__': app.run(host="127.0.0.1",port=8080)
|
Flask路由
Flask会自动将不同的路由解析到对应的函数,你需要使用route()装饰器来绑定路由和函数
下面的代码将根目录绑定至 main() 函数
1 2 3
| @app.route('/') def main(): return 'hello world'
|
只要稍微修改以下装饰器,就可以把 “/main” 路由绑定至 main() 函数
1 2 3
| @app.route('/main') def main(): return 'hello world'
|
路由中可以加入变量,以便于将具体路由以参数形式传递到绑定的函数中
例如下面的代码,如果访问 “localhost:8080/hello”,则变量 name == “hello”
1 2 3
| @app.route('/<name>') def main1(name): return name
|
你也可以指定参数类型,例如整型
1 2 3
| @app.route('/<int:id>') def main1(id): return str(id)
|
如果路由为 “localhost:8080/abc”,则Flask会跳过该函数,寻找下一个匹配的路由
使用字典可以方便地传入多个参数
1 2 3 4 5 6
| @app.route('/<name>/<int:id>') def main(**dic): return ''' name= %s<br/> id = %d ''' % (dic['name'], dic['id'])
|
模板
在项目根目录下创建 template 文件夹,并添加一个 index.html文件
在代码中使用模板
1 2 3
| @app.route("/") def index(): return render_template("index.html")
|
在模板中使用大括号可以标注一个变量,并在函数中传入该变量
1 2 3 4 5 6 7 8 9 10
| <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>Template</title> </head> <body> {{ value }} </body> </html>
|
1 2 3
| @app.route("/") def index(): return render_template("index.html",value="dearxuan")
|
html中的变量会被直接替换为对应的字符串,且会被自动转义