史上最全的flask框架知识点合集,共4篇,将近60页,MD文档学习Flask这么久,收集了很多学习资料,然后整理成md文档,随时取用,真是太爽了。学习笔记共4部分,近60页,从0到项目的循序渐进教程。想去的朋友直接这里获取:https://zhuanlan.zhihu.com/p/...笔记目录:1笔记内容Flask简介Web应用的本质Web诞生的初衷(世界WideWeb)是使用因特网来交换工作文档。Web框架什么是Web框架?一套辅助开发者快速开发web应用的功能代码。开发者只需要按照框架的要求,在指定位置编写自己的业务逻辑代码即可。比如某区要建医院,有两种方式:圈地,打地基,建楼,装修,入驻,买楼,装修,入驻,为什么要用web框架?由于网站的发展,特别是服务器端,涉及的知识和内容非常广泛。对程序员的要求会越来越高。如果采用成熟健壮的框架,那么一些基础工作,如安全、数据流控等,都可以交由框架来处理,让程序开发人员可以专注于具体的业务逻辑。使用该框架的优点:稳定性和扩展性强,可以降低开发难度,提高开发效率。HelloWorld程序创建Python项目打开Pycharm,创建一个PurePython类型的项目,创建项目后选择之前创建的py3_flask作为虚拟环境Step4在指定的虚拟环境中输入whichpython即可获取路径示例:新建文件helloworld.py导入Flask类fromflaskimportFlaskFlask函数接收一个参数__name__,会指向程序所在的包app=Flask(__name__)装饰器的作用是映射路由到视图函数index@app.route('/')defindex():return'HelloWorld'Flask应用实例的run方法启动WEB服务器if__name__=='__main__':app.run()期间程序运行,程序实例中会使用url_map链接装饰器路由和视图保存对应关系,打印结果如下图:路由基础定义指定parame路由定义的ters,请求方式指定使用PostMan指定路由地址#指定访问路径为demo1@app.route('/demo1')defdemo1():return'demo1'传参示例toroutes有时我们需要将同类型的URL映射到同一个视图函数中进行处理,例如:使用同一个视图函数展示不同用户的个人信息。#路由传递参数@app.route('/user/')defuser_info(user_id):return'hello%s'%user_id路由传递的参数默认是字符串,参数的类型可以也可以指定#路由传递参数@app.route('/user/')defuser_info(user_id):return'hello%d'%user_id这里指定int,尖括号里的内容是动态的,可以暂时理解为接受int类型的值。其实int的意思就是用IntegerConverter来处理url传入的参数。指定请求方法。装饰器路由。具体实施。Flask有两个核心:Werkzeug和Jinja2——Werkzeug实现路由、调试和Web服务器网关接口——Jinja2模板实现。Werkzeug是一个遵循WSGI协议的python函数库——它在内部实现了web框架的许多底层东西,比如请求和响应对象;-兼容WSGI规范;支持统一码;-支持基本会话管理和签名cookie;-集成URL请求路由等。Werkzeug库的路由模块负责实现URL解析。不同的URL对应不同的视图函数。路由模块解析请求信息的URL,匹配URL对应的视图函数,执行函数生成响应报文。路由模块内部:Rule类用于构造不同URL模式的对象,路由URL规则Map类存储所有的URL规则和一些配置参数。BaseConverter的子类负责定义匹配规则。MapAdapter类负责协调Rules的具体匹配工作。Flask-SQLAlchemy安装与设置SQLALchemy实际上是对数据库的一种抽象,让开发者不需要直接和SQL语句打交道,而是通过Python对象来操作数据库。在放弃一些性能开销的同时,换来的是更高的开发效率。大改进SQLAlchemy是一个关系数据库框架,提供高级ORM和底层本地数据库操作。flask-sqlalchemy是一个flask扩展,它简化了SQLAlchemy的操作。文档地址:http://docs.jinkan.org/docs/f...安装安装flask-sqlalchemypipinstallflask-sqlalchemy如果是连接mysql数据库,需要安装mysqldbpipinstallflask-mysqldb数据库Flask-SQLAlchemy中设置连接,通过URL指定数据库,程序使用的数据库必须保存到Flask配置对象的SQLALCHEMY_DATABASE_URI键中app.config['SQLALCHEMY_DATABASE_URI']='mysql://root:mysql@127.0.0.1:3306/test'Othersettings:#动态跟踪修改设置,如果不设置,只会提示警告app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=True#查询时会显示原始SQL语句使用的数据库$mysql-uroot-pmysql$createdatabasetestcharsetutf8;其他配置名称备注SQLALCHEMY_DATABASE_URI用于连接的数据库URI。例如:sqlite:////tmp/test.dbmysql://username:password@server/dbSQLALCHEMY_BINDS字典映射绑定到连接URI。有关绑定的更多信息,请参阅使用绑定处理多个数据库。SQLALCHEMY_ECHO如果设置为True,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提供,多帖博客平台发布!