安装flask

  1. pip install flask

最小的程序

  1. from flask import Flask
  2. app = Flask(__name__)
  3. @app.route('/')
  4. def index():
  5. return 'hello world'

创建实例

路由注册

包括URL规则和视图函数

使用@app.route()装饰器,

可以为视图绑定多个URL
动态URL

启动服务器

  1. flask run #旧的方式使用app.run(), 已不推荐使用。

默认会在http://127.0.0.1:5000

  1. flask run --host=0.0.0.0
  2. falsk run --port=8000
  3. # 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), 根据不同环境系统改变不同的行为和设置。

  1. #Flask 提供FLASK_ENV环境变量用来设置环境, 默认为生产production, 可将该环境变量保存在flaskenv中
  2. 开发环境下,调试模式Debug将被开启,执行flask run会启动werkzeug内置的调试器debugger和重载器reloader

项目配置

有些时候需要设置程序的某些行为,这时就需要使用配置变量。 在flask中,配置变量就是一些大写的python变量, 也称配置参数或配置键。

  • flask的变量都是通过Flask对象的app.config属性作为统一的接入配置。
  • 配置变量必须全部使用大写
  • 有些扩展需要读取配置值来完成初始化操作,如Flask-Mail,应尽量将加载配置的操作提前,最好在程序实例app创建后就加载配置。

方式1:
类似在字典中添加键值对一样设置一个配置

  1. app.config['ADMIN_ANME']= 'Bob'

方式2:
使用update()方法一次加载多个值

  1. app.config.update(
  2. TESTING=True,
  3. SECRET_KEY='234t5rhgf'
  4. )

方式3:
把配置变量存储在单独的python脚本、json格式的文件或Python类中, config方法提供了相应的方法来导入配置。

3.1 python脚本

3.2 json格式文件

3.3 Python类

读取配置
同操作字典,读取配置就是从config字典里通过将变量名称作为键读取对应的值

  1. value = app.config['ADMIN_NAME']

URL与端点

  • 需要避免URL硬编码, 而是使用flask提供的url_for()函数获取URL。
  • url_for()函数第一个参数为端点(endpoint)值。 Flask中,端点用来标记一个视图函数以及对应的URL规则,端点默认值即为视图函数名称,。
  • 如果url有动态部分,需要在url_for()函数中传入相应的参数.
  1. @app.route('/hello')
  2. def say_hello():
  3. return 'hello,flask'
  4. #这个路由的端点及视图函数的名称say_hello,通过url_for('say_hello')获得对应的URL即'/hello'
  5. @app.route('/hello/<name>')
  6. def say_hello(name):
  7. return 'hello, %s' % name
  8. # 使用url_for('hello', name='Bob') 得到对应的url '/hello/Bob'.

Flask命令

  • 安装Flask后,包含了许多内置命令的flask脚本就可以用来, 如flask run, flask shell。
  • 可以为任意函数添加app.cli.command()装饰器注册一个flaks命令。 函数名默认即为命令名, 也可以在装饰器内传入参数设置命令名称
  • flask —help可以查看命令帮助文档
  1. @app.cli.command()
  2. def hello():
  3. click.echo('hello, command。')
  4. # 可以使用falsk hello调用该函数
  5. @app.cli.command('say_hello') #调用命令为 flask say_hello

模板与静态文件

模板(template)、静态文件(static file)。 默认模板文件存放在项目根目录中的templates文件夹中, 静态文件存放在项目根目录的static文件夹下,这两个文件夹需要和包含程序实例的模板处于同一个目录下。如下:

  1. hello/
  2. - templates/
  3. - static/
  4. - app.py

Flask 与MVC架构