zoukankan      html  css  js  c++  java
  • 中间件、蓝图、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对象就改变一次,活着重新赋值了一次。

  • 相关阅读:
    多路RTSP流解码:最高可支持12路视频编解码
    RK3399 PRO快速开发
    人脸识别精准营销解决方案
    EC-A3399ProC 六核64位AI嵌入式主机
    Cluster Server R1集群服务器
    韦东山推出基于Firefly平台的升级版嵌入式Linux教程
    【上传图片】上传图片二三事
    【linux】阿里云防火墙相关
    【php】LAMP中开启错误提示
    【mysql】mysql优化
  • 原文地址:https://www.cnblogs.com/ShenJunHui6/p/11219502.html
Copyright © 2011-2022 走看看