安装flask
pip install flask
最小的程序
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'hello world'
创建实例
路由注册
包括URL规则和视图函数
使用@app.route()装饰器,
可以为视图绑定多个URL
动态URL
启动服务器
flask run #旧的方式使用app.run(), 已不推荐使用。
flask run --host=0.0.0.0
falsk run --port=8000
# IP和端口也可以通过环境变量FLASK_RUN_HOST和HOST_RUN_PORT设置
发现实例
在当前目录寻找app.py或wsgi.py模块,并从中寻找app或application的程序实例
2 在环境变量FLASK_APP对应的模块名/导入路径寻找app或application的程序实例。
mac: export FLASK_APP=hello
win: set FLASK_APP=hello
3 如果安装了python-dotenv那么在使用falsk run时会使用他从.flaskenv或.env中加载环境变量。
环境变量
设置运行环境
开发环境(development environment)、生产环境(production environment), 根据不同环境系统改变不同的行为和设置。
#Flask 提供FLASK_ENV环境变量用来设置环境, 默认为生产production, 可将该环境变量保存在flaskenv中
开发环境下,调试模式Debug将被开启,执行flask run会启动werkzeug内置的调试器debugger和重载器reloader
项目配置
有些时候需要设置程序的某些行为,这时就需要使用配置变量。 在flask中,配置变量就是一些大写的python变量, 也称配置参数或配置键。
- flask的变量都是通过Flask对象的app.config属性作为统一的接入配置。
- 配置变量必须全部使用大写
- 有些扩展需要读取配置值来完成初始化操作,如Flask-Mail,应尽量将加载配置的操作提前,最好在程序实例app创建后就加载配置。
方式1:
类似在字典中添加键值对一样设置一个配置
app.config['ADMIN_ANME']= 'Bob'
方式2:
使用update()方法一次加载多个值
app.config.update(
TESTING=True,
SECRET_KEY='234t5rhgf'
)
方式3:
把配置变量存储在单独的python脚本、json格式的文件或Python类中, config方法提供了相应的方法来导入配置。
3.1 python脚本
3.2 json格式文件
3.3 Python类
读取配置
同操作字典,读取配置就是从config字典里通过将变量名称作为键读取对应的值
value = app.config['ADMIN_NAME']
URL与端点
- 需要避免URL硬编码, 而是使用flask提供的url_for()函数获取URL。
- url_for()函数第一个参数为端点(endpoint)值。 Flask中,端点用来标记一个视图函数以及对应的URL规则,端点默认值即为视图函数名称,。
- 如果url有动态部分,需要在url_for()函数中传入相应的参数.
@app.route('/hello')
def say_hello():
return 'hello,flask'
#这个路由的端点及视图函数的名称say_hello,通过url_for('say_hello')获得对应的URL即'/hello'
@app.route('/hello/<name>')
def say_hello(name):
return 'hello, %s' % name
# 使用url_for('hello', name='Bob') 得到对应的url '/hello/Bob'.
Flask命令
- 安装Flask后,包含了许多内置命令的flask脚本就可以用来, 如flask run, flask shell。
- 可以为任意函数添加app.cli.command()装饰器注册一个flaks命令。 函数名默认即为命令名, 也可以在装饰器内传入参数设置命令名称
- flask —help可以查看命令帮助文档
@app.cli.command()
def hello():
click.echo('hello, command。')
# 可以使用falsk hello调用该函数
@app.cli.command('say_hello') #调用命令为 flask say_hello
模板与静态文件
模板(template)、静态文件(static file)。 默认模板文件存放在项目根目录中的templates文件夹中, 静态文件存放在项目根目录的static文件夹下,这两个文件夹需要和包含程序实例的模板处于同一个目录下。如下:
hello/
- templates/
- static/
- app.py