中间件蓝图g对象

Posted shenjunhui6

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中间件蓝图g对象相关的知识,希望对你有一定的参考价值。

中间件

'''
flask中一旦请求到来,要执行app()--->>>执行的是app.__call__,整个flask的入口
'''
from flask import Flask

app = Flask(__name__)


@app.route('/')
def index():
    return 'index'


# 模拟中间件
class My(object):
    def __init__(self, old_wsgi_app):
        self.old_wsgi_app = old_wsgi_app

    def __call__(self, environ, start_response):
        print('开始之前')
        result = self.old_wsgi_app(environ, start_response)
        print('结束之后')
        return result


if __name__ == '__main__':
    # 把原来的wsgi_app替换为自定义的
    app.wsgi_app = My(app.wsgi_app)
    app.run()
    # 请求来了,执行app.__call__本质执行的是:self.wsgi_app(environ, start_response),app.wsgi_app(environ, start_response)
    # 会调到自己写的类的__call__方法

蓝图

对程序进行目录结构划分

不使用蓝图,自己分文件
-templates
-views
    -__init__.py
    -user.py
    -order.py
-app.py

app.py

from views import app
if __name__ == '__main__':
    app.run()

init.py

from flask import Flask,request
app = Flask(__name__)
#不导入这个不行
from . import account
from . import order
from . import user

user.py

from . import app
@app.route('/user')
def user():
    return 'user'

order.py

from . import app
@app.route('/order')
def order():
    return 'order'

文件地址

g对象

专门用来储存用户信息的g对象,g的全称为global
g对象在一次请求中的所有的代码的地方,都是可以使用的

g对象和session的区别

session对象是可以跨request的,只要session还未失效,不同的request的请求会获取到同一个session,但是g对象不是,g对象不需要过期时间,请求一次g对象就改变一次,活着重新赋值了一次。

以上是关于中间件蓝图g对象的主要内容,如果未能解决你的问题,请参考以下文章

python-flask复习—— 装饰器的坑及解决办法flask中的路由/实例化配置/对象配置/蓝图/特殊装饰器(中间件重定义错误页面)

第二篇 Flask基础篇之(闪现,蓝图,请求扩展,中间件)

基础架构基础服务基础平台基础中间件等等

模拟在方法中间创建的对象

风哥免费直播课来袭,手把手带你规划Oracle数据库工程师学习蓝图

红帽全新JBoss中间件服务嵌入容器技术