抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

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文件

DearXuan

在代码中使用模板

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中的变量会被直接替换为对应的字符串,且会被自动转义

评论