史上 flask 框架最全知识点汇合,共 4 大部分,近 60 页,MD 文档
学些了 Flask 这么久,收集了好多好多的学习材料,而后整顿成 md 文档筹备随时应用,切实是太爽了。
学习笔记共 4 大部分,近 60 页,从 0 到我的项目一步步手把手教程。
想要的小伙伴间接去这获取:
https://zhuanlan.zhihu.com/p/…
笔记目录:
1 笔记内容
Flask 简介
Web 应用程序的实质
Web(World Wide Web)诞生最后的目标,是为了利用互联网交换工作文档。
Web 框架
-
什么是 Web 框架?
- 帮助开发者疾速开发 Web 应用程序的一套性能代码
- 开发者只须要依照框架约定要求,在指定地位写上本人的业务逻辑代码
-
例如:在某个区须要成立一家医院,有两种形式:
- 圈地,打地基,盖楼,装修,入驻
- 买楼,装修,入驻
- 为什么要用 Web 框架?
web 网站倒退至今,特地是服务器端,波及到的常识、内容,十分宽泛。这对程序员的要求会越来越高。如果采纳成熟,持重的框架,那么一些根底的工作,比方,安全性,数据流管制等都能够让框架来解决,那么程序开发人员能够把精力放在具体的业务逻辑下面。应用框架的长处:
- 稳定性和可扩展性强
- 能够升高开发难度,进步开发效率。
HelloWorld 程序
创立 Python 我的项目
- 关上 Pycharm,创立
Pure Python
类型的我的项目,创立我的项目实现之后抉择之前创立的py3_flask
作为虚拟环境
第 4 步门路能够通过在指定虚拟环境下,输出
which python
取得
示例:
- 新建文件 helloworld.py
- 导入 Flask 类
from flask import Flask
Flask 函数接管一个参数__name__,它会指向程序所在的包
app = Flask(__name__)
- 装璜器的作用是将路由映射到视图函数 index
@app.route('/')
def index():
return 'Hello World'
- Flask 应用程序实例的 run 办法 启动 WEB 服务器
if __name__ == '__main__':
app.run()
- 在程序运行过程中,程序实例中会应用
url_map
将装璜器路由和视图的对应关系保存起来,打印后果如下图:
路由根本定义
- 明确路由定义的参数,申请形式指定
- PostMan 的应用
指定路由地址
# 指定拜访门路为 demo1
@app.route('/demo1')
def demo1():
return 'demo1'
给路由传参示例
有时咱们须要将同一类 URL 映射到同一个视图函数解决,比方:应用同一个视图函数来显示不同用户的个人信息。
# 路由传递参数
@app.route('/user/<user_id>')
def user_info(user_id):
return 'hello %s' % user_id
- 路由传递的参数默认当做 string 解决,也能够指定参数的类型
# 路由传递参数
@app.route('/user/<int:user_id>')
def user_info(user_id):
return 'hello %d' % user_id
这里指定 int,尖括号中的内容是动静的,在此临时能够了解为承受 int 类型的值,实际上 int 代表应用 IntegerConverter 去解决 url 传入的参数
指定申请形式
装璜器路由具体实现梳理
Flask 有两大外围:Werkzeug 和 Jinja2
- Werkzeug 实现路由、调试和 Web 服务器网关接口
- Jinja2 实现了模板。
Werkzeug 是一个遵循 WSGI 协定的 python 函数库
- 其外部实现了很多 Web 框架底层的货色,比方 request 和 response 对象;- 与 WSGI 标准的兼容;反对 Unicode;- 反对根本的会话治理和签名 Cookie;- 集成 URL 申请路由等。
Werkzeug 库的 routing 模块负责实现 URL 解析。不同的 URL 对应不同的视图函数,routing 模块会对申请信息的 URL 进行解析,匹配到 URL 对应的视图函数,执行该函数以此生成一个响应信息。
routing 模块外部有:
-
Rule 类
- 用来结构不同的 URL 模式的对象,路由 URL 规定
-
Map 类
- 存储所有的 URL 规定和一些配置参数
-
BaseConverter 的子类
- 负责定义匹配规定
-
MapAdapter 类
- 负责协调 Rule 做具体的匹配的工作
Flask-SQLAlchemy 装置及设置
- SQLALchemy 实际上是对数据库的形象,让开发者不必间接和 SQL 语句打交道,而是通过 Python 对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大晋升
- SQLAlchemy 是一个关系型数据库框架,它提供了高层的 ORM 和底层的原生数据库的操作。flask-sqlalchemy 是一个简化了 SQLAlchemy 操作的 flask 扩大。
- 文档地址:http://docs.jinkan.org/docs/f…
装置
- 装置 flask-sqlalchemy
pip install flask-sqlalchemy
- 如果连贯的是 mysql 数据库,须要装置 mysqldb
pip install flask-mysqldb
数据库连贯设置
- 在 Flask-SQLAlchemy 中,数据库应用 URL 指定,而且程序应用的数据库必须保留到 Flask 配置对象的 SQLALCHEMY_DATABASE_URI 键中
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/test'
- 其余设置:
# 动静追踪批改设置,如未设置只会提醒正告
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
#查问时会显示原始 SQL 语句
app.config['SQLALCHEMY_ECHO'] = True
- 配置实现须要去 MySQL 中创立我的项目所应用的数据库
$ mysql -uroot -pmysql
$ create database test charset utf8;
- 其余配置
名字 | 备注 |
---|---|
SQLALCHEMY_DATABASE_URI | 用于连贯的数据库 URI。例如:sqlite:////tmp/test.dbmysql://username:password@server/db |
SQLALCHEMY_BINDS | 一个映射 binds 到连贯 URI 的字典。更多 binds 的信息见 用 Binds 操作多个数据库。 |
SQLALCHEMY_ECHO | 如果设置为 Ture,SQLAlchemy 会记录所有 发给 stderr 的语句,这对调试有用。(打印 sql 语句) |
SQLALCHEMY_RECORD_QUERIES | 能够用于显式地禁用或启用查问记录。查问记录 在调试或测试模式主动启用。更多信息见 get_debug_queries()。 |
SQLALCHEMY_NATIVE_UNICODE | 能够用于显式禁用原生 unicode 反对。当应用 不适合的指定无编码的数据库默认值时,这对于 一些数据库适配器是必须的(比方 Ubuntu 上 某些版本的 PostgreSQL)。 |
SQLALCHEMY_POOL_SIZE | 数据库连接池的大小。默认是引擎默认值(通常 是 5) |
SQLALCHEMY_POOL_TIMEOUT | 设定连接池的连贯超时工夫。默认是 10。 |
SQLALCHEMY_POOL_RECYCLE | 多少秒后主动回收连贯。这对 MySQL 是必要的,它默认移除闲置多于 8 小时的连贯。留神如果 应用了 MySQL,Flask-SQLALchemy 主动设定 这个 |
上述内容常识从外面摘出一部分,这个笔记在我的博客外面
https://zhuanlan.zhihu.com/p/…
本文由博客一文多发平台 OpenWrite 公布!