测试客户端应用全局变量只在一个请求内,从一个函数到另一个函数共享数据,全局变量并不够好。因为这 在线程环境下行不通。 Flask 提供了一个特殊的对象来确保只在活动的请求中 有效,并且每个请求都返回不同的值。一言蔽之:它做正确的事情,如同它对 request 和 session 做的那样。 flask. g 在这上存储你任何你想要存储的。例如一个数据库连接或者当前登入的用户。 从 Flask 0.10 起,对象 g 存储在应用上下文中而不再是请求上下文中,这 意味着即使在应用上下文中它也是可访问的而不是只能在请求上下文中。在 结合 伪造资源和上下文 模式使用来测试时这尤为有用。 另外,在 0.10 中你可以使用 get() 方法来获取一个属性或者如果这 个属性没设置的话将得到 None (或者第二个参数)。 这两种用法现在是没有区别的: user = getattr(flask.g, 'user', None)
user = flask.get.get('user', None)
现在也能在 g 对象上使用 in 运算符来确定它是否有某个属性,并且它 将使用 yield 关键字来生成这样一个可迭代的包含所有keys的生成器。 这是一个代理。详情见 留意代理 。
有用的函数和类flask. current_app 指向正在处理请求的应用。这对于想要支持同时运行多个应用的扩展有用。 它由应用上下文驱动,而不是请求上下文,所以你可以用 app_context() 方法 修改这个代理的值。 这是一个代理。详情见 留意代理 。
flask. abort (code)抛出一个给定状态代码的 HTTPException 。 例如想要用一个页面未找到异常来终止请求,你可以调用 abort(404) 。 参数: | code – the HTTP error code. |
---|
消息闪现JSON 支持Flask 使用 simplejson 来实现JSON。自从 simplejson 既在标准库中提供也在 Flask 的拓展中提供。Flask将首先尝试自带的simplejson,如果失败了就使用标准 库中的json模块。除此之外,为了更容易定制它还会委托访问当前应用的JSON的编码 器和解码器。 所以首先不要这样用: - try:
- import simplejson as json
- except ImportError:
- import json
你可以这样 For usage examples, read the json documentation. 关于更多的用法,请阅读标准库中的 json 文档。下面的拓展已经默认被集成 到了标准库中JSON模块里: datetime 对象被序列化为 RFC 822 字符串。- 任何带有
__html__ 方法(比如 Markup )将在序列化的时候 调用这个方法然后返回的字符串将会被序列化为字符串。
这个 htmlsafe_dumps() 方法也能在 Jinja2 的过滤器中使用,名字为 |tojson 。请注意在 script 标签内部的内容将不会被转义,所以如果你想在 script 内部使用的话请确保它是不可用的通过 |safe 来转义,除非你正在 使用 Flask 0.10,如下: <script type=text/javascript>
doSomethingWith({{ user.username|tojson|safe }});
</script>
|