史上flask框架最全知识点集合,共4大部分,近60页,MD文档

史上flask框架最全知识点集合,共4大部分,近60页,MD文档

学些了Flask这么久,收集了好多好多的学习资料,然后整理成md文档准备随时使用,实在是太爽了。

学习笔记共4大部分,近60页,从0到项目一步步手把手教程。

想要的小伙伴直接去这获取:

https://zhuanlan.zhihu.com/p/...

笔记目录:

史上flask框架最全知识点集合,共4大部分,近60页,MD文档_第1张图片

史上flask框架最全知识点集合,共4大部分,近60页,MD文档_第2张图片

1 笔记内容

Flask简介

Web应用程序的本质

Web(World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档。

史上flask框架最全知识点集合,共4大部分,近60页,MD文档_第3张图片

Web框架

  • 什么是Web框架?

    • 协助开发者快速开发 Web 应用程序的一套功能代码
    • 开发者只需要按照框架约定要求,在指定位置写上自己的业务逻辑代码
    • 例如:在某个区需要成立一家医院,有两种方式:

      1. 圈地,打地基,盖楼,装修,入驻
      2. 买楼,装修,入驻
  • 为什么要用Web框架?

web网站发展至今,特别是服务器端,涉及到的知识、内容,非常广泛。这对程序员的要求会越来越高。如果采用成熟,稳健的框架,那么一些基础的工作,比如,安全性,数据流控制等都可以让框架来处理,那么程序开发人员可以把精力放在具体的业务逻辑上面。使用框架的优点:

  • 稳定性和可扩展性强
  • 可以降低开发难度,提高开发效率。

HelloWorld程序

创建 Python 项目

  • 打开 Pycharm,创建 Pure Python 类型的项目,创建项目完成之后选择之前创建的 py3_flask 作为虚拟环境

史上flask框架最全知识点集合,共4大部分,近60页,MD文档_第4张图片

第 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 将装饰器路由和视图的对应关系保存起来,打印结果如下图:

史上flask框架最全知识点集合,共4大部分,近60页,MD文档_第5张图片

路由基本定义

  • 明确路由定义的参数,请求方式指定
  • PostMan 的使用

指定路由地址

# 指定访问路径为 demo1
@app.route('/demo1')
def demo1():
    return 'demo1'

给路由传参示例

有时我们需要将同一类 URL 映射到同一个视图函数处理,比如:使用同一个视图函数来显示不同用户的个人信息。

# 路由传递参数
@app.route('/user/')
def user_info(user_id):
    return 'hello %s' % user_id
  • 路由传递的参数默认当做 string 处理,也可以指定参数的类型
# 路由传递参数
@app.route('/user/')
def user_info(user_id):
    return 'hello %d' % user_id
这里指定int,尖括号中的内容是动态的,在此暂时可以理解为接受 int 类型的值,实际上 int 代表使用 IntegerConverter 去处理 url 传入的参数

指定请求方式

装饰器路由具体实现梳理

史上flask框架最全知识点集合,共4大部分,近60页,MD文档_第6张图片

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:[email protected]: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 发布!

你可能感兴趣的:(python)