zoukankan      html  css  js  c++  java
  • Flask项目结构

    上节回顾:
        -1 配置
            -0 app.debug=
            -第一种:app.config['DEBUG']=True
            -第二种:
                -app.config.from_pyfile('py文件')   ****
                -from_json
                -from_object:可以传类      *****
        -路由:
            -典型写法:@app.route('/index',methods=['GET'],endpoint='别名,不能重复')
            -路由本质:app.add_url_rule()
            -参数:了解
            -自定义转换器(支持正则)
        -CBV
            -cbv加装饰器:decorators = [auth, ]
        -模板:
            -支持执行函数,并传参数
            -safe  
        -请求响应:
            -request:
                -args
                -from
                -method
                -files
            -response
                -三件套:直接返回字符串,返回重定向,返回页面
                -jsonfy---返回json格式
                -往里写cookie
                    -res=make_response('ok')
                    -res.set_cookie()
                    
        -session
            -session['user']=lqz  设置值
            -user=session['user'] 取值
            -del session['user']
            -session.pop('user')
            
        -闪现(错误信息展示)
            -flash('',category='xx')
            -get_flashed_messages(category_filter=['x1'])
            
        -请求扩展:
            -before_request:django中:process_request
            -after_requets:django中:process_response
            -before_first_request:第一次请求走
                
                
    今日内容:
        -请求扩展:
            -errorhandler
                -@app.errorhandler(404)
                def error_404(err):
                    print(err)
                    return '404错误'
    
                @app.errorhandler(500)
                def error_500(err):
                    return '500错误'
            -标签和过滤器
                定义:
                    -@app.template_global()
                        def add(a,b):
                            return a+b
    
                    @app.template_filter()
                    def add2(a,b,c,d):
                        return a+b+c+d
                使用:
                    {{add(1,2)}}
                    {{1|add2(2,3,4)}}
            -teardown_request 每次请求走,都会走它,包括视图函数出了异常
        -中间件(了解)
            from flask import Flask,render_template
            app = Flask(__name__)
    
            app.debug=True
    
    
            class MyMiddle():
                def __init__(self,wsgi_app):
                    self.wsgi_app=wsgi_app
                def __call__(self, *args, **kwargs):
                    # 写代码
                    obj=self.wsgi_app
                    #写代码
                    return obj
            @app.route('/')
            def hello_world():
                return 'Hello World!'
    
            if __name__ == '__main__':
                # app.__call__
                app.wsgi_app=MyMiddle(app.wsgi_app)
                app.run()
        -蓝图
            -对程序进行目录划分
            -蓝图使用:
                -第一步:生成一个蓝图
                    from flask import Blueprint
                    # 1 创建一个蓝图
                    order_blue=Blueprint('order',__name__,url_prefix='/app02')
                -第二部:使用
                    @order_blue.route('/order')
                -第三步:注册
                    from flask_test.views import order
                    from flask_test.views import user
                    app.register_blueprint(order.order_blue)
                    app.register_blueprint(user.user_blue)
            -中小型项目:
                -工程名
                    -项目名(app01)
                        -templates
                        -static
                        -views
                            -user.py
                            -order.py
                    -manage.py
            -大型项目
                -详见代码
            -蓝图的befort_request,对当前蓝图有效
            
        -session源码分析
            -请求来了,生成一个空session放到ctx中:ctx = self.request_context(environ)
            -ctx.push():
                if self.session is None:
                    session_interface = self.app.session_interface
                    # 正常情况下session中有值了
                    # 什么情况下没有:请求中没有cookie,session仍为空
                    #从cookie中取出value,(有解密过程)转成session对象
                    
                    self.session = session_interface.open_session(
                        self.app, self.request
                    )
    
                    if self.session is None:
                        # 生成一个空session
                        self.session = session_interface.make_null_session(self.app)
            -请求走了:
                -self.full_dispatch_request()
                    -1 执行before_request
                    -2 执行视图函数
                    -3 把session写入
                        -if not self.session_interface.is_null_session(ctx.session):
                            self.session_interface.save_session(self, ctx.session, response)
                            
        threading.local:
            -自定义一个Local,支持线程和协程
            
        
                            
        -请求上下文,应用上下文
            -请求上下文:session和request
            -应用上下文:current_app和g
                
            
                
                
                
                
                
                
                
                
            

    pipreqs ./ --encoding='utf8'

  • 相关阅读:
    动态规划题 HDU-1024
    高效位运算 __builtin_系列函数
    使用评价
    站立会议12-12
    场景调研
    站立会议12-10
    站立会议12-9
    站立会议12-8
    站立会议12-7
    站立会议12-6
  • 原文地址:https://www.cnblogs.com/xuqidong/p/13121813.html
Copyright © 2011-2022 走看看