zoukankan      html  css  js  c++  java
  • Flask——中间件,蓝图

    中间件(跟django中间件完全不一样)

    from flask import Flask
    app = Flask(__name__)
    @app.route('/')
    def index():
        return 'Hello World!'
    # 模拟中间件
    class Md(object):
        def __init__(self,old_wsgi_app):
            self.old_wsgi_app = old_wsgi_app
    
        def __call__(self,  environ, start_response):
            print('开始之前')
            ret = self.old_wsgi_app(environ, start_response)
            print('结束之后')
            return ret
    
    if __name__ == '__main__':
        #1我们发现当执行app.run方法的时候,最终执行run_simple,最后执行app(),也就是在执行app.__call__方法	
        #2 在__call__里面,执行的是self.wsgi_app().那我们希望在执行他本身的wsgi之前做点事情。
        #3 所以我们先用Md类中__init__,保存之前的wsgi,然后我们用将app.wsgi转化成Md的对象。
        #4 那执行新的的app.wsgi_app,就是执行Md的__call__方法。
        #把原来的wsgi_app替换为自定义的,
        
        app.wsgi_app = Md(app.wsgi_app)
        app.run()
    

    蓝图(blueprint)

    1 没有蓝图之前前,都是单文件
    2 有了蓝图可以分文件,分app,之前的请求扩展还是一样用,只是在当前蓝图对象管理下的有效
    3 蓝图使用
    	#第一步在app中注册蓝图,括号里是一个蓝图对象
        app.register_blueprint(user.us)
    	# 第二步,在不同文件中注册路由时,直接使用蓝图对象注册,不用使用app了,避免了循环导入的问题
        @account.route('/login.html', methods=['GET', "POST"])
    4 中小型项目目录划分
    	项目名字
        	-pro_flask文件夹
            -__init__.py
        	-templates
            	-login.html
            -statics
            	-code.png
            -views
            	-blog.py
            	-account.py
            	-user.py
            -run.py
            
    5 大型项目
        项目名
        	-pro_flask文件夹
            	-__init__.py
                -web
                	-__init__.py
                	-static
                    -views.py
                    -templates
        		-admin
                    -templates
                    -static
                    -views.py
                    -__init__.py
            -run.py
     
    
  • 相关阅读:
    flutter  安装教程
    使用TcpTrace小工具截获Web Service的SOAP报文
    移除TFS服务器关系
    webservice log4net日志写入失败
    php发送邮件功能(PHPMailer-master插件)
    Unity3d:延迟加载ScrollView的内容
    Unity3d:播放物理目录下的MP3文件
    installshield Basic 工程每次安装完提示重启电脑
    网站背景音乐源码
    Unity3d:加载Format是RGB24位的图片失败(加载图片显示问号)
  • 原文地址:https://www.cnblogs.com/pythonwl/p/13573360.html
Copyright © 2011-2022 走看看