• Flask 框架中 上下文基础理念,包括cookie,session存储方法,requset属性,current_app模块和g模块


    Flask中上下文,分为请求上下文和应用上下文。既状态留存 ,就是把变量存在某一个地方可以调用

    请求上下文:实际就是request和session用法理念,既都是可以存储东西。

    应用上下文:既变量共享,就是把东西存储在变量里可以打印预览,应用上下文包括

    current_app模块和g模块
     
     
    cookie方法增,查,删。
    注:存储cookie时使用set_coooki方法存储key--calve形式数据,另一个参数max_age
      是指定的存活时间。
      
      调用cookie的方法是通过request模块的cookies属性的get方法,指定key来调用value
     
      删除cookie通过make_response对象内置的delete_cookie方法来指定key 来删除value
     
    具体代码如下:
    # -*- encoding: utf-8 -*-
    # cooki相关操作依赖于make_respinse库
    from flask import Flask, make_response, request
    
    # 建立对象
    app = Flask(__name__)
    # 从配置文件导入配置
    app.config.from_pyfile('config.ini')
    
    
    @app.route('/')
    def index():
        return '这里是首页'
    
    # 存cooki方法
    @app.route('/setcookie')
    def set_cookie():
        resp = make_response('存储cookie')
        # 使用set_coooki方法存储key--calve形式数据,另一个参数是指定的存活时间
        resp.set_cookie("productname", '[卫生纸,花生,男神鹏]', max_age=3600)
        return resp
    
    
    # 调用cooki
    @app.route('/getcookie')
    def get_cookie():
        # 通过request模块的cookies属性的get方法,指定key来调用value
        resp = request.cookies.get('productname')
        return resp
    
    
    # 删除cookie的方法
    @app.route('/delcookie')
    def del_cookie():
        # 通过make_response对象内置的delete_cookie方法来指定key 来删除value
        resp = make_response('删除cookie')
        resp.delete_cookie('productname')
        return resp
    
    
    if __name__ == "__main__":
        app.run(debug=True)
    View Code

    session方法增,查,删。

    注:在存储sesson时按字典键值对形式直接使用session对存储的内容赋值。如:session['username'] = '你好'

      查询时也一样遵循字典查询方式 如:se = session['username']   然后 return se

      删除时通过session的pop方法来删除指定的key来删除value 既:session.pop('username')

    具体代码如下:

    # -*- encoding: utf-8 -*-
    # session 是依赖于flask的session模块
    # 如果想使用sessio模块,在配置里一定要配置session的key
    from flask import Flask,session
    
    # 建立对象
    app = Flask(__name__)
    # 从配置文件加载配置
    app.config.from_pyfile('config.ini')
    
    
    @app.route('/')
    def index():
        return '我是首页.session'
    
    # 存储session的方法
    
    
    @app.route('/set_session')
    def set_session():
        # 直接使用session对存储的内容赋值
        session['username'] = '你好'
        return '存储session成功'
    
    # 调用session的方法
    @app.route('/get_session')
    def get_session():
        # 通过esssion直接内容调用
        se = session['username']
        return se
    
    # 删除session的方法
    @app.route('/del_session')
    def del_session():
        # 通过session的pop方法来删除指定的key来删除value
        session.pop('username')
        return '删除成功'
    
    
    if __name__ == "__main__":
        app.run()
    View Code

    request属性是Flask框架中请求上下文重要模块之一:我们可以通过requset包含的属性来查询访问者信息在后台打印。

    具体代码如下:

    # -*- encoding: utf-8 -*-
    from flask import Flask, request
    
    app = Flask(__name__)
    app.config.from_pyfile('config.ini')
    
    @app.route('/', methods=['get', 'post'])
    def index():
        #  打印请求头信息
        print(request.headers)
    
        # 打印请求方式
        print(request.method)
    
        # 打印请求的url地址
        print(request.url)
    
        # 打印所有cookie信息
        print(request.cookies)
    
        # 打印网址参数信息
        print(request.args.get('id'))
    
        # dict是查询某对象里边所有属性
        print(request.__dict__)
        
        return '你好'
    
    
    if __name__ == "__main__":
        app.run(debug=True)
    View Code

    current_app模块和g模块在这里只做简单介绍:既current_app模块用来存储当前应用的具体配置信息,g既global用来存储公共变量 以下代码做了个工具函数,方便查看

    注:使用工具类要导包  from 文件名 import 方法名

    具体代码为:

    # -*- encoding: utf-8 -*-
    from flask import Flask, current_app, g
    # 从自定义的工具类文件内部引入check_username方法
    from utils import check_uesrname
    
    # 创建对象
    app = Flask(__name__)
    
    # 载入配置文件
    app.config.from_pyfile('config.ini')
    
    
    @app.route('/')
    def index():
        # current_app模块用来存储当前应用的具体配置信息
        print('打印名字:%s' % current_app.name)
        print('打印详细信息:%s' % current_app.__dict__)
        # 打印全局对象g里面自定义的属性username
        check_uesrname()
    
        return '李云鹏是积云酒蒙子'
    
    
    if __name__ == "__main__":
        app.run()
    View Code
    # -*- encoding: utf-8 -*-
    from flask import Flask,g
    
    def check_uesrname():
        g.username = '李云鹏是积云酒蒙子'
        print(g.username)
    View Code
  • 相关阅读:
    [Leetcode] Count and Say
    [Leetcode] Set Matrix Zeroes
    推荐系统
    异常检测
    维度约间
    聚类
    SVM的简单介绍
    tiled卷积神经网络(tiled CNN)
    数据驱动概念的复杂事件检测
    Topographic ICA as a Model of Natural Image Statistics(作为自然图像统计模型的拓扑独立成分分析)
  • 原文地址:https://www.cnblogs.com/wjohh/p/10294426.html
Copyright © 2020-2023  润新知