• flask框架


    详细见:https://www.cnblogs.com/xiaoyuanqujing/articles/11715484.html

    1.Local与偏函数

    2.init递归

    3.请求上下文

    4.蓝图

    5.g对象

    6.信号

    7.flask-session

    一.Local与偏函数

    二.init递归

    三.请求上下文

    四.蓝图

    @@@见电脑视频盘flask文件夹里面

    五.g对象

    """
    结论:
    1.当前请求内你只要设置了就可以取,只要你不return掉,
    2.必须先设置后取,当前请求内可以取无限次
    3.就算你当前请求设置了,如果不取,其他请求过来,也是取不到的
    """
    from flask import Flask,request,g
    app = Flask(__name__)
    
    #
    @app.before_request
    def a():
        # 当一个url路径等于根的时候,带一个参数过去要用
        if request.path == "/":
            request.name = "sb"
            g.name = "sb"
        print(g.name)
    
    # def set_g():
    #     g.name = "sb"
    
    @app.route('/')
    def index():
        # set_g()
        print(g.name)
    
        return "1"
    
    @app.route('/index')
    def login():
        return '2'
    
    if __name__ == '__main__':
        app.run()

    六.信号

    首先需要安装:pip3 install blinker

    from flask import Flask,signals,render_template
    app = Flask(__name__)
    # 往信号中注册函数
    #1给信号绑定要执行的函数
    #无需管调用,因为flask,已经给我们设置调用点
    def func(*args,**kwargs):
        print('触发型号',args,kwargs)
    #与该信号进行绑定 绑定这个函数对象
    signals.request_started.connect(func)
    # 点send就会触发
    # signals.request_started.send
    # 触发信号: signals.request_started.send()
    @app.before_first_request
    def before_first1(*args,**kwargs):
        print("befor_first_request")
    
    @app.before_request
    def before_first3(*args,**kwargs):
        print("befor_request")
    
    @app.route('/',methods=['GET',"POST"])
    def index():
        print('视图')
        return "视图"
    
    if __name__ == '__main__':
      # app.wsgi_app
        app.run()

    自定义信号:

    from flask import Flask
    from flask.signals import _signals
    app = Flask(import_name=__name__)
    # 1.自定义信号
    xxxxx = _signals.signal('xxxxx')
    
    def func(sender,a):
        print(sender,a)
        print("我是自定义信号")
    
    # 2.自定义信号中注册函数 传入这个函数对象
    xxxxx.connect(func)
    
    @app.route("/x")
    def index():
        # 3.触发信号 就算不传也要接受参数,第一个参数就是那个人去调的,没有实际意义
        # 只允许第一个参数用位置传参,第二个参数必须用关键字传参
        xxxxx.send("sb",a="1")
        return 'Index'
    
    if __name__ == '__main__':
        app.run()

    七.flask-session

    首先需要安装:pip3 install flask-session

    使用方法一:(复杂)

    '''
    参数代表什么:
    1.key_prefix='jason',2.use_signer=True,3. permanent=False
    1.随便写就是一个前缀
    2.False不用设置秘钥,如果为True就需要秘钥
    3.关闭浏览器浏览器失效
    '''
     1 # 将session存入redis中
     2 from flask import Flask,session
     3 # 要放入redis中就导入redis
     4 from flask_session import RedisSessionInterface
     5 import redis
     6 app = Flask(__name__)
     7 # 就是一个秘钥
     8 app.secret_key="ajksda"
     9 # redis链接
    10 conn=redis.Redis(host='127.0.0.1',port=6379)
    11 
    12 #use_signer是否对key签名
    13 app.session_interface=RedisSessionInterface(conn,key_prefix='jason',use_signer=True, permanent=False)
    14 @app.route('/')
    15 def hello_world():
    16     session['sb']='jason'
    17     return 'Hello World!'
    18 
    19 @app.route('/index')
    20 def index():
    21     print(session['sb'])
    22     return "ok"
    23 
    24 if __name__ == '__main__':
    25     app.run()
    View Code

    使用方式二(推荐使用)

    from flask import Flask,session
    import  redis
    from flask_session import Session
    app = Flask(__name__)
    # 需要存入redis数据库
    app.config['SESSION_TYPE'] = 'redis'
    # redis链接
    app.config['SESSION_REDIS'] =redis.Redis(host='127.0.0.1',port='6379')
    # 存入时加个前缀
    app.config['SESSION_KEY_PREFIX']="jason"
    Session(app)
    
    @app.route('/')
    def hello_world():
        session['sb']='jason'
        return 'Hello World!'
    
    @app.route("/index")
    def index():
        print(session['sb'])
        return "ok"
    
    if __name__ == '__main__':
        app.run()
  • 相关阅读:
    【一个蒟蒻的挣扎】单源最短路(Dijkstra)
    【字符串大模拟】潜伏者—— NOIP2009原题
    【一个蒟蒻的挣扎】最长上升子序列
    【球的序列】——最长上升子序列
    【洛谷P1886】滑动窗口——单调队列
    【实时更新】你永远都不会想到上了考场会犯什么样的**错误——汇总
    【洛谷P1816】忠诚——ST表做法
    【一道来自老师的题的题解】equip——奇妙的最短路
    【洛谷P1119题解】灾后重建——(floyd)
    济南集训总结
  • 原文地址:https://www.cnblogs.com/zahngyu/p/11854072.html
Copyright © 2020-2023  润新知