初识Flask
1.1 搭建开发环境
1.1.1 Pipenv工作流
-
安装pip和pipenv
$ pip install pipenv
linux全局安装pipenv
$ sudo -H pip install pipenv
-
创建虚拟环境
创建想项目文件夹,执行以下语句$ pipenv install
pipenv常用命令
令 作用 ipenv shell 显式地激活虚拟环境 ipenv graph 查看依赖关系 ipenv --venv 查看项目对应的虚拟环境路径 -
管理依赖
在创建虚拟环境时,如果项目根目录下没有Pipfile文件,pipenv install
命令还会在项目文件根目录下创建Pipfile和Pipfile.lock文件,前者用来记录项目依赖包列表,后者记录了固定版本的详细依赖包列表。当用pipenv安装/删除/更新依赖包时,pipenv以及pipenvfile.lock文件就会自动更新。
1.1.2 安装Flask
$ pipenv install flask
Flask的依赖包:
名称 | 说明 |
---|---|
Jinja2 | 模板渲染引擎 |
MarkupSafe | HRML字符转移工具 |
Werkzeug | WSGI工具集,处理请求与响应,内置WSGI开发服务器、调试器和重载器 |
click | 命令行工具 |
itsdangerous | 提供各种加密签名功能 |
更新包:
$ pipenv update flask
1.1.3 集成开发环境
pycharm安装不作赘述。
1.2 Hello,Flask!
app.py文件:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello Flask!</h1>'
1.2.1 创建程序实例
Flask类是Flask的核心类,它提供了很多与程序相关的属性和方法
1.2.2 注册路由
- 为视图绑定多个URL:一个视图函数可以绑定多个URL
- 动态URL:在url规则中添加变量
@app.route('/greet/<name>')
def greet(name):
pass
1.3 启动开发服务器
1.3.1 Run Flask
$ flask run
默认:127.0.0.1:5000
旧的启动开发服务器的方式是使用
app.run()
方法,目前已不推荐使用。
- 自动发现程序实例
①从当前目录寻找app.py和wsgi.py模块,并从中寻找名为app或application的程序实例。
②从环境变量FLASK_APP对应的模块名/导入路径寻找为app或application的程序实例。
创建环境变量:
linux
$ export FLASK_APP=hello
windows:
> set FLASK_APP=hello
- 管理环境变量
$ pipenv install python-dotenv
Flask的自动发现程序实例机制还有第三条规则:如果安装了python-dotenv
,那么在使用flask run
或其他命令时会使用它从.flaskenv文件和.env文件中加载环境变量。
加载环境变量的优先级:
手动设置的环境变量>.env中设置的环境变量>.flaskenv设置的环境变量
<kbd>.env</kbd>:包含敏感信息环境变量
<kbd>.flaskenv</kbd>:包含flask相关的环境变量
- 使用pycharm运行服务器
①点击左侧+符号打开下拉列表
②新建一个python类型的运行配置
③勾选“Single instance only”
④将第一项配置字段通过下拉选项选为“Module Name”
⑤填入模块名称flask
⑥第二栏“Parameters”填入命令run,也可以附加其他启动选项
⑦在“working directory”字段中选择程序所在的目录为工作目录
1.3.2 更多的启动选项
- 使服务器外部可见
对应环境变量:FLASK_RUN_HOST
$ flask run --host=0.0.0.0
- 改变默认端口
对应环境变量:FLASK_RUN_PORT
$ flask run --port=5888
1.3.3 设置运行环境
开发环境和生产环境:默认为生产环境。
环境变量配置:写到.flaskenv文件中
FLASK_ENV=development/production
如果你想单独控制调试模式的开关,可以通过设置FLASK_DEBUG
FLASK_DEBUG=1/0
- 调试器:当程序报错,点击错误页面中报错行后的小窗口打开包含上下文信息的python shell
- 重载器:当对代码做了修改之后,希望立马生效,安装watchdog
$ pipenv install watchdog --dev
1.4 Python Shell
$ flask shell
1.5 Flask扩展
1.6 项目配置
app.config['ADMIN_NAME'] = 'Peter'
配置的名称必须是全大写形式,小写的变量不会被读取
1.7 URL与端点
@app.route('/')
def index():
pass
url_for('index') # 获取对应的URL,即“?”
使用url_for()函数生成的URL是相对URL。
1.8 Flask命令
使用装饰器创建自定义命令
@app.cli.command()
def hello():
click.echo('Hello, Human!')