主题
项目源码: 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