Flask
Flask基础
配置文件
- 将路径的字符串用rsplit分割,
- 使用importlib模块导入
- app.config.from_object("settings.DevelopmentConfig")写一个配置类导入
路由系统
使用endpoint字段进行配置,用于反向生成url
如果没有写endpoint则使用函数名
url=url_for('')
当然动态路由也可以进行反向生成
闪现
基于session存储数据,读取时pop一下.只能够取一次
蓝图
目标:给开发者提供目录结构
也可以给某个蓝图增加前缀
也能在总蓝图里加上before_request 所有的请求都会先走这个函数
你用到了哪些Flask组件
- wtforms
- DBUtils
- SQLAIchemy
- redis
- flask-script
- flask-migrate
上下文管理
flask上下文管理的理解
答:与Django不同的是,Django用的是将请求传参的形式进行对请求的操作,那么flask是用请求上下文.
Flask的上下文管理分为两种,一种是请求的上下文管理,另外一种是应用上下文管理.
- 请求到来:
- 将请求和session相关封装到ctx=RequestContext对象中
- 将app和g封装到app_ctx=AppContext对象中.
- 再通过LocalStack对象将ctx append_ctx封装到Local对象中
- 获取数据:
-
- 通过LocalProxy对象+偏函数,调用LocalStack去Local中获取
-
- 获取响应ctx/app_ctx中封装的值
- 请求结束
- 调用LocalStack的pop方法,将ctx和app_ctx移除
Local是什么?作用?
Local里边封装了_storage_的字典,{唯一标识:{'stack':[ctx,]}}
根据每一个协程/或者线程开辟空间源码里(用try来进行判断),保证数据的隔离
LocalStack是什么?作用?
所有对Local数据的操作都需要在该类里面进行,
首先功能比较明确,Local用来存储值,而LocalStack用于操作Local的值
并将Local的列表维护成一个栈
为什么要把 ctx=Request/session app_ctx=app/g
因为离线脚本不需要用到请求和session
g和session一样吗
不一样,
session在创建的时候会去cookis中取值,在销毁的时候就会将数据写入cookie中
g在实例化APPContext对象的时候创建的时候是空的,需要给他赋值,等到视图结束就销毁了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人