Skip to content

项目源码: https://gitee.com/PatrickW/flask-web

安装Flask

bash
pip install flask

helloword

python
from flask import Flask
app = Flask(__name__)

SERVER_PORT=9999

@app.route('/')
def index():
    return '<h1>Hello Flask!</h1>'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=SERVER_PORT, debug=True)

启动服务

bash
export FLASK_APP=1hellowold.py # 指定启动项目
export FLASK_DEBUG=1  # 启动调试模式
flask run --host=0.0.0.0 --port=9999 # 启动项目

调试模式下,关闭调试器,启用重载器

shell
export FLASK_APP=1hellowold.py
flask run --host=0.0.0.0 --port=9999 --debug --no-debugger

Web生产服务器Gunicorn:https://t.zsxq.com/rehI7

路由

常用写法

python
@app.route('/')
def index():
    return '<h1>Hello World!</h1>'

动态路由:尖括号里的内容就是动态部分

python
@app.route('/user/<name>')
def user(name):
    return '<h1>Hello, {}!</h1>'.format(name)

支持在路由中使用string、int、float和path类型。

path类型是一种特殊的字符串,与string类型不同的是,它可以包含正斜线。

python
@app.route('/user/<int:id>')
def user2(id):
    return '<h1>Hello, {}!</h1>'.format(id)

查询路由列表

python
print(app.url_map)

查看代码: https://gitee.com/PatrickW/flask-web/blob/master/src/2route.py

Map([<Rule '/static/<filename>' (HEAD, GET, OPTIONS) -> static>,
 <Rule '/' (HEAD, GET, OPTIONS) -> index>,
 <Rule '/user/<name>' (HEAD, GET, OPTIONS) -> user>,
 <Rule '/user/<id>' (HEAD, GET, OPTIONS) -> query_user>])

jinja2模版

Flask提供的render_template()函数把Jinja2模板引擎集成到了应用中

shell
% pip list
Package            Version
------------------ -------
blinker            1.8.2
click              8.1.8
flask              3.0.3
gunicorn           23.0.0
importlib-metadata 8.5.0
itsdangerous       2.2.0
jinja2           3.1.5
MarkupSafe         2.1.5
packaging          24.2
pip                19.2.3
setuptools         41.2.0
werkzeug           3.0.6
zipp               3.20.2

变量过滤器

safe: 输出html标签

capitalize: 首字母大写

lower : 小写

upper : 大写

title : 首字母大写

trim : 去掉前后空格

striptags : 去掉html标签

查看代码:https://gitee.com/PatrickW/flask-web/blob/master/src/4template.py