创新互联Flask教程:Flask 深入上下文作用域

比如说你有一个应用函数返回用户应该跳转到的 URL 。想象它总是会跳转到 URL 的 ​next​ 参数,或 HTTP referrer ,或索引页:

创新互联公司公司2013年成立,公司以网站建设、成都网站设计、系统开发、网络推广、文化传媒、企业宣传、平面广告设计等为主要业务,适用行业近百种。服务企业客户近1000家,涉及国内多个省份客户。拥有多年网站建设开发经验。为企业提供专业的网站建设、创意设计、宣传推广等服务。 通过专业的设计、独特的风格,为不同客户提供各种风格的特色服务。

from flask import request, url_for

def redirect_url():
    return request.args.get('next') or \
           request.referrer or \
           url_for('index')

如你所见,它访问了请求对象。当你试图在纯 python shell 中运行这段代码时, 你会看见这样的异常:

>>> redirect_url()
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'NoneType' object has no attribute 'request'

这有很大意义,因为我们当前并没有可以访问的请求。所以我们需要制造一个 请求并且绑定到当前的上下文。 ​test_request_context​ 方 法为我们创建一个 ​RequestContext​:

>>> ctx = app.test_request_context('/?next=http://example.com/')

可以通过两种方式利用这个上下文:使用 with 声明或是调用 ​push()​ 和 ​pop()​ 方法:

>>> ctx.push()

从这点开始,你可以使用请求对象:

>>> redirect_url()
u'http://example.com/'

直到你调用 pop:

>>> ctx.pop()

因为请求上下文在内部作为一个栈来维护,所以你可以多次压栈出栈。这在实现 内部重定向之类的东西时很方便。

文章题目:创新互联Flask教程:Flask 深入上下文作用域
转载来于:http://www.stwzsj.com/qtweb/news35/885.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联