zoukankan      html  css  js  c++  java
  • Flask ~~“一见钟情之初体验”(flask的request模块的属性及上下文)

    上下文:相当于一个容器,保存了 Flask 程序运行过程中的一些信息。

    Flask中有两种上下文,请求上下文和应用上下文
    请求上下文(request context)

    在 flask 中,可以直接在视图函数中使用 request 这个对象进行获取相关数据,而 request 就是请求上下文的对象,保存了当前本次请求的相关数据,请求上下文对象有:request、session
    request
    封装了HTTP请求的内容,针对的是http请求。举例:user = request.args.get('user'),获取的是get请求的参数。
    session
    用来记录请求会话中的信息,针对的是用户信息。举例:session['name'] = user.id,可以记录用户信息。还可以通过session.get('name')获取用户信息。
    应用上下文(application context)
    它的字面意思是 应用上下文,但它不是一直存在的,它只是request context 中的一个对 app 的代理(人),所谓local proxy。它的作用主要是帮助 request 获取当前的应用,它是伴 request 而生,随 request 而灭的。
    应用上下文对象有:current_app,g
    current_app
    应用程序上下文,用于存储应用程序中的变量,可以通过current_app.name打印当前app的名称,也可以在current_app中存储一些变量,例如:
    应用的启动脚本是哪个文件,启动时指定了哪些参数
    加载了哪些配置文件,导入了哪些配置
    连了哪个数据库
    有哪些public的工具类、常量
    应用跑再哪个机器上,IP多少,内存多大
    current_app.name
    current_app.test_value='value'
    g变量
    g 作为 flask 程序全局的一个临时变量,充当者中间媒介的作用,我们可以通过它传递一些数据,g 保存的是当前请求的全局变量,不同的请求会有不同的全局变量,通过不同的thread id区别
    g.name='abc'
    注意:不同的请求,会有不同的全局变量
    两者区别:
    请求上下文:保存了客户端和服务器交互的数据
    应用上下文:flask 应用程序运行过程中,保存的一些配置信息,比如程序名、数据库连接、应用信息等

    上边所提的g变量就相当于python中的全局变量,而且可以跨文件使用,具体如下:

    首先创一个py文件 里边写好g变量的内容,如:

    # -*- encoding: utf-8 -*-
    #导入g模块
    from flask import Flask,g def check_username(): g.username = '你好' print(g.username)

    在另一个py文件直接以导包的方法导入文件名和方法名

    from 文件名 import 方法名

    代码如下:

    # -*- encoding: utf-8 -*-
    #g相当与globle  current_app是当前的应用
    from flask import Flask,current_app,g
    #从自定义的工具类文件内部引入check_username方法
    #utils是刚刚g方法的文件名
    from utils import check_username #建立对象 app=Flask(__name__) #载入配置文件 app.config.from_pyfile('config.ini') @app.route('/',methods=['POST','GET']) def index(): #current_app模块用来存储当前应用的具体配置信息 # print(current_app.__dict__) #打印全局对象g里面自定义的属性username check_username() return '这里是首页' if __name__ == "__main__": app.run()

    flask的request模块的属性如下:


    method:请求的方法(get或者post)
    form:返回form的内容
    args和values:args返回请求中的参数,values返回请求中的参数和form
    cookies:cookies信息
    headers:请求headers信息,返回的结果是个list
    date、files:date是请求的数据,files随请求上传的文件

    代码效果如下:

    # -*- encoding: utf-8 -*-
    
    from flask import Flask,request
    
    app=Flask(__name__)
    
    app.config.from_pyfile('config.ini')
    
    @app.route('/',methods=['POST','GET'])
    def index():
    
    #打印头部信息
    print(request.headers)
    
    #打印请求的方式
    print(request.method)
    
    #打印出请求的url地址
    print(request.url)
    
    #打印使用的cookie信息
    print(request.cookies)
    
    #打印网址的参数信息
    print(request.args.get('id'))
    
    #打印某个对象所有的属性
    print(request.__dict__)
    return '这里是首页'
    
     
    
    if __name__ == "__main__":
    app.run()
  • 相关阅读:
    动态规划最大利润的问题
    【转】mysql基础汇总
    mac使用frida
    Mac 下python3 [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 解决方法
    mac使用jadx逆向app
    python桶排序代码
    requests_html使用asyncio
    async for的使用
    [转载]微信企业号:企业客户的移动应用入口
    微信服务号、订阅号、企业号差别
  • 原文地址:https://www.cnblogs.com/sashao/p/10152272.html
Copyright © 2011-2022 走看看