python2 文档:http://docs.jinkan.org/docs/flask/
python3 文档:https://dormousehole.readthedocs.io/en/latest/installation.html#python
如果你和我一样,明天就要面试,或者马上要上手一个 Flask 项目,而你又有那么一段时间没有使用 Flask,那么这篇快读会带你将 Flask 中的要点进行快速翻阅,话不多说,我们开始吧。
一、动态路由[配合converter]
1 |
|
二、url_for
1 |
|
三、请求与响应/自定义状态码/cookie与session
1 |
|
1 | # 请求相关 |
1 | # 响应相关 |
四、重定向/Abort/自定义错误页面/render_template/jinjia2
1 |
|
notFound.html
1 |
|
五、jinjia语句/宏/模板/上下文
略,这块东西内容多信息量不大
六、请求勾子
before_first_request
- 在处理第一个请求前执行
before_request
- 在每次请求前执行
- 如果在某修饰的函数中返回了一个响应,视图函数将不再被调用
after_request
- 如果没有抛出错误,在每次请求后执行
- 接受一个参数:视图函数作出的响应
- 在此函数中可以对响应值在返回之前做最后一步修改处理
- 需要将参数中的响应在此参数中进行返回
teardown_request:
- 在每次请求后执行
- 接受一个参数:错误信息,如果有相关错误抛出
代码测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24# 在第一次请求之前调用,可以在此方法内部做一些初始化操作
def before_first_request():
print("before_first_request")
# 在每一次请求之前调用,这时候已经有请求了,可能在这个方法里面做请求的校验
# 如果请求的校验不成功,可以直接在此方法中进行响应,直接return之后那么就不会执行视图函数
def before_request():
print("before_request")
# 在执行完视图函数之后会调用,并且会把视图函数所生成的响应传入,可以在此方法中对响应做最后一步统一的处理
def after_request(response):
print("after_request")
response.headers["Content-Type"] = "application/json"
return response
# 请每一次请求之后都会调用,会接受一个参数,参数是服务器出现的错误信息
def teardown_request(e):
print("teardown_request")
七、Flask-WTF/CSRF/消息闪现Flash
八、Flask-Moment本地化日期和时间
九、蓝图
十、Flask-mail
十一、Flask-Login
十二、Werkzeug 加密存储
十三、itsdangerous 用户确认
十四、jsonify
十五、Flask-sqlalchemy
1 | pip install flask-sqlalchemy |
十六、富文本编辑器之MD
十七、Flask-Apscheduler 定时任务
十八、Flask-Script
通过使用Flask-Script扩展,我们可以在Flask服务器启动的时候,通过命令行的方式传入参数。
1 | pip install flask-script |
集成 Flask-Script
1 | from flask import Flask |
https://www.cnblogs.com/glf1160/p/9214106.html
十九、Flask-Migrate(依赖flask-script)
二十、Flask-Celery-Helper
二十一、Flask-Cache
二十二、Flask-Principal
二十二、Flask-Bcrypt
二十三、Flask-Admin
其他
Flask 中的 线程局部变量 request 原理
在多线程服务器中客户端每建立一个链接,服务器就创建一个线程,每个线程中就会有一个 request 来表示客户端的链接请求信息。
不同的用户访问flask服务器.都有自己的 request.
Flask 隐藏了一个细节 ,线程 A 使用如 request.args 时,它先看这段代码当中运行到哪个线程,识别出这个线程,
从 request 当中根据当前这个线程的编号,把属于这个线程的参数值拿出来.
安装
依赖
当安装 Flask 时,以下配套软件会被自动安装。
- Werkzeug 用于实现 WSGI ,应用和服务之间的标准 Python 接口。
- Jinja 用于渲染页面的模板语言。
- MarkupSafe 与 Jinja 共用,在渲染页面时用于避免不可信的输入,防止注入攻击。
- ItsDangerous 保证数据完整性的安全标志数据,用于保护 Flask 的 session cookie.
- Click 是一个命令行应用的框架。用于提供
flask
命令,并允许添加自定义 管理命令。
virtualenv
Python 3 内置了用于创建虚拟环境的
venv
模块。创建一个虚拟环境
创建一个项目文件夹,然后创建一个虚拟环境。创建完成后项目文件夹中会有一个
Flask
文件夹:在 Windows 下:
1
2
3mkdir myproject
cd myproject
python3 -m venv Flask激活虚拟环境
在 Windows 下:
1
venv\Scripts\activate
激活后,你的终端提示符会显示虚拟环境的名称。
安装 Flask
在已激活的虚拟环境中可以使用如下命令安装 Flask:
1
pip install Flask
当安装速度缓慢时,你也可以进行换源安装:
1
pip install -i https://pypi.doubanio.com/simple/ Flask
系统自带转换器
1
2
3
4
5
6
7
8
9DEFAULT_CONVERTERS = {
'default': UnicodeConverter,
'string': UnicodeConverter,
'any': AnyConverter,
'path': PathConverter,
'int': IntegerConverter,
'float': FloatConverter,
'uuid': UUIDConverter,
}
###