史上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 公布!