网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

Python中Flask怎么使用全局变量g传递数据

这篇“Python中Flask怎么使用全局变量g传递数据”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python中Flask怎么使用全局变量g传递数据”文章吧。

成都创新互联是专业的无棣网站建设公司,无棣接单;提供成都网站设计、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行无棣网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

环境

$ python --version
Python 3.7.0

$ pip show flask
Name: Flask
Version: 2.0.3

需求:

全局入口before_request,我们拦截用户请求,对用户权限进行统一校验,校验通过再放行,否则拦截用户。

将校验通过的当前用户 user_id 存放到全局变量,以便后续处理方法使用,比如获取当前用户的一些信息

实现:

1、Flask使用全局变量g 的示例

# -*- coding: utf-8 -*-
from flask import Flask, g

app = Flask(__name__)


@app.get('/')
def index():
    return {'user_id': g.user_id}


@app.before_request
def handle_before_request():
    g.user_id = 100
    print('before_request')


if __name__ == '__main__':
    app.run(debug=True)

2、改用手动注册的方式进行路由绑定, 也可以获取到全局变量g

# -*- coding: utf-8 -*-
from flask import Flask, g

app = Flask(__name__)


def index():
    return {'user_id': g.user_id}


@app.before_request
def handle_before_request():
    g.user_id = 100
    print('before_request')


# 改用手动注册的方式进行路由绑定
app.add_url_rule('/', view_func=index)

if __name__ == '__main__':
    app.run(debug=True)

3、拆分到单独的函数,也可以获取到全局变量g

# -*- coding: utf-8 -*-
from flask import Flask, g

app = Flask(__name__)


def index():
    return {'user_id': g.user_id}


# 拆分到单独的函数使用 g
def permission():
    g.user_id = 100


@app.before_request
def handle_before_request():
    permission()
    print('before_request')


# 改用手动注册的方式进行路由绑定
app.add_url_rule('/', view_func=index)

if __name__ == '__main__':
    app.run(debug=True)

问题及报错

1、报错1

from flask import g


g['user_id'] = 1

TypeError: '_AppCtxGlobals' object does not

2、报错2

from flask import g

g.user_id = 1

TypeError: '_AppCtxGlobals' object is not

以上就是关于“Python中Flask怎么使用全局变量g传递数据”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注创新互联行业资讯频道。


新闻标题:Python中Flask怎么使用全局变量g传递数据
URL网址:http://bjjierui.cn/article/gdpesp.html

其他资讯