【PythonWeb开发】Flask四大内置对象

2024-06-29 1376阅读

        在Flask中,current_app、g、request、session是非常关键的内置对象,它们分别承担着不同的作用,并广泛应用于Web开发中的多个环节。

【PythonWeb开发】Flask四大内置对象
(图片来源网络,侵删)

(1)current_app

        它是一个代表当前Flask应用实例的代理对象,允许开发者在不同的模块和函数中访问应用实例的配置和扩展等。current_app主要用于访问应用配置和在应用上下文之外的地方使用应用级别的资源。例如,可以在应用的配置中使用current_app.config['KEY']来获取或设置配置值。

from flask import Flask, current_app
app = Flask(__name__)
@app.route('/')
def index():
    config_value = current_app.config['KEY']
    return f"Config value: {config_value}"
if __name__ == '__main__':
    app.run()

(2)g

        g全称就是global,这是一个特定于应用上下文的全局变量,常用于在同一请求处理过程中的不同函数间传递数据。g对象的生命周期与请求处理期间的生命周期相同,因此它通常被用来在视图函数之间临时存储数据,比如数据库连接或用户信息。

from flask import Flask, g
app = Flask(__name__)
@app.before_request
def before_request():
    g.user = 'John Doe'  # 在每个请求开始时设置g.user
@app.route('/')
def index():
    user = g.user
    return f"User : {user }"  # 在视图函数中使用g.user
if __name__ == '__main__':
    app.run()

(3)request

        代表了客户端发出的HTTP请求,包含了请求的所有相关数据,如方法、路径、参数、数据和头信息等。通过request对象,可以获取诸如请求参数(例如 request.args)、表单数据(例如 request.form)以及查询字符串(例如 request.query_string)等信息。由于其封装了请求的全部信息,因此是处理Web请求不可或缺的部分

from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def index():
    method = request.method
    args = request.args
    return f"Method: {method}, Args: {args}"
if __name__ == '__main__':
    app.run()

(4)session

        该对象用于管理用户的会话信息,通常用来存储需要在不同请求间保持的信息,例如用户登录状态。默认情况下,session数据存储在客户端的Cookie中,但也可以配置成其他存储方式。通过session对象的方法,例如session['key'] = value来存储数据,使用value = session['key']来读取数据,这样可以实现用户状态的跟踪和管理。

from flask import Flask, session
app = Flask(__name__)
app.secret_key = 'your_secret_key'
@app.route('/set_session')
def set_session():
    session['username'] = 'John'
    return "Session set."
@app.route('/get_session')
def get_session():
    username = session.get('username', 'Not set')
    return f"Username: {username}"
if __name__ == '__main__':
    app.run()
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]