
flask源码阅读
文章平均质量分 79
阅读flask源码
谭亮亮coding
喜欢跑马拉松的程序员。博客:
leetcode主页:https://leetcode.cn/u/ttkltll/
简书: www.jianshu.com/u/1c055bb2a2c5
豆瓣: www.douban.com/people/97001041/
展开
-
阅读flask源码3:仿写Local,LocalStack
我们上篇分析了上下文压入栈,出栈的大致流程,现在我们要问,flask是怎么实现的呢?准备来说,Local是怎么管理不同请求对象的,LocalProxy是怎么代理的。因为flask源码太复杂,今天我们自己一步一步实现类似于Local,LocalProxy的代码。通过自己实现,我们学会用代理模式,学会python的魔法方法__setattr__,getattr。class A(object): def spam(self, x): print('A.spam') def foo原创 2020-06-04 09:57:56 · 261 阅读 · 0 评论 -
阅读flask源码1:flask请求流程
我们先大致的走下flask处理请求的流程,我用的是flask0.1这个版本的源码。之所以用这个,是为了去除不必要枝叶,快速把握flask的主干。后面再迭代,加细节。from flask import Flask, Request, request, session, flash, abort, _request_ctx_stackfrom user import webapp = Flask(__name__)web.register(app)#下面会注册路由:@app.route(.原创 2020-06-04 09:56:07 · 352 阅读 · 0 评论 -
阅读flask源码2:Local,LocalStack
我们还是以flask0.1的代码来阅读,先提出几个常见的问题:1上下文是怎么被压入栈的?2为什么在不同的程序中通过相同的变量request可以拿到对应的请求我们先看第一个问题:上下文是怎么被压入栈的?服务器传过来的请求参数,被封装成了一个_RequestContext对象,这个对象里有这个请求相关联的一组互相“绑架”的参数,它们组成一个上下文环境。比如request,被实例化的app。如下:class _RequestContext(object): def __init__(s原创 2020-06-04 09:57:06 · 291 阅读 · 0 评论