向用户发送“flash消息”的包。

z3c.flashmessage的Python项目详细描述


Flash messages

组件向用户显示小消息。

Sending a message to the current user

要向当前用户发送消息,可以使用基于会话的消息 来源。设置一个:

>>> from z3c.flashmessage.sources import SessionMessageSource
>>> from __future__ import unicode_literals
>>> source = SessionMessageSource()
>>> source.send('The world will come to an end in 40 seconds!')

源允许列出所有当前消息:

>>> m = list(source.list())
>>> m
[<z3c.flashmessage.message.Message object at 0x...>]
>>> m[0].message
'The world will come to an end in 40 seconds!'
>>> str(m[0].type)
'message'

Receiving messages

生成的标准消息在 收到。接收者将在消息被调用之前对其调用prepare() 分发给接收它的代码:

>>> m[0].prepare(source)
>>> list(source.list())
[]

还有另一个默认消息在 阅读:

>>> from z3c.flashmessage.message import PersistentMessage
>>> source.send(PersistentMessage('I will stay forever!'))
>>> m = list(source.list())[0]
>>> m.message
'I will stay forever!'
>>> m.prepare(source)
>>> list(source.list())
[<z3c.flashmessage.message.PersistentMessage object at 0x...>]

Global receiver

有一个全局接收器,它查询设置为 公用事业。让我们将会话消息源设置为实用程序:

>>> from zope.component import provideUtility
>>> provideUtility(source)
>>> source.send('Test!')
>>> from z3c.flashmessage.sources import RAMMessageSource
>>> source2 = RAMMessageSource()
>>> provideUtility(source2, name='other')
>>> source2.send('Test 2!')
>>> source2.send('Test 3!')
>>> from z3c.flashmessage.receiver import GlobalMessageReceiver
>>> receiver = GlobalMessageReceiver()
>>> m = list(receiver.receive())
>>> len(m)
4
>>> m[0].message
'I will stay forever!'
>>> m[1].message
'Test!'
>>> m[2].message
'Test 2!'
>>> m[3].message
'Test 3!'

在接受者发出信息后,它们就从 消息源,因为接收者通知消息 阅读:

>>> len(list(receiver.receive()))
1

Filtering message types

当列出来自消息源的消息时,我们可以限制 看。如果我们不给出类型,则返回所有消息。默认类型 消息的message

>>> source3 = RAMMessageSource()
>>> source3.send('Test 2!')
>>> list(source3.list())
[<z3c.flashmessage.message.Message object at 0x...>]
>>> list(source3.list('message'))
[<z3c.flashmessage.message.Message object at 0x...>]
>>> list(source3.list('somethingelse'))
[]

Performance and Scalability Issues

默认情况下,使用 Zope.会议。这可能是一个重大的可伸缩性问题;请参见 有关详细信息,请参阅zope.session中的design.txt。你应该想想 在为未经身份验证的用户使用FlashMessages之前,执行两次,如下所示 很容易导致匿名页面上不必要的数据库增长 视图,以及重载下的冲突错误。

一种解决方案是将系统配置为在 猛撞。您可以通过配置一个提供 z3c.flashmessage.interfaces.IMessageSource工厂设置为 z3c.flashmessage.sources.RAMMessageSource,如果 您的应用程序需要一个。

RAM存储速度更快,消除了持久性问题 但有两个新问题。首先,要意识到 如果服务器进程因任何原因重新启动,则所有未读 FlashMessages将丢失。其次,如果对应用程序进行集群 使用zeo的服务器,还必须确保您的负载平衡器 支持会话关联(因此特定的客户端总是命中相同的 后端服务器)。这在一定程度上降低了 集群。

CHANGES

2.1 (2018-11-12)

  • 声明支持python 3.6、3.7、pypy和pypy3。
  • 放弃对Python3.3的支持。
  • 放弃对python setup.py test的支持。

2.0 (2016-08-08)

  • 标准化命名空间__init__
  • 声明python 3.3、3.4和3.5的兼容性。

1.3 (2010-10-28)

  • SessionMessageSource在客户端 从源读取消息。已更改内部API,因此读取“否” 较长的会话创建时,它还不存在。

1.2 (2010-10-19)

  • 已删除对zope.app.zcmlfiles的测试依赖项。

1.1 (2010-10-02)

  • 消除了对zope.app.testing的测试依赖。

1.0 (2007-12-06)

  • 更新了对zope.session的依赖关系,而不是zope.app.session以获取 消除贬损警告。

1.0b2 (2007-09-12)

  • 错误修复:当源中有多条消息时,并非所有消息 将由接收者返回。

1.0b1 (2007-08-22)

  • 首次公开发行。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
gwt java。lang.UnsupportedClassVersionError:不受支持的专业。小版本51.0   java XML解析器trycatch不工作   java Jackson MRBean不工作,无法构造实例   javascript是检查参数的更好方法吗?   java在发生冲突时从ArrayList中删除对象   JavaSpringWebFlux和KeyClope JWTRESTAPI   java Selected选项在微调器中不可见   java在增加分区后,有没有办法在ApacheKafka中保持顺序?   java添加SourceRoot会导致spring启动应用程序出错   java Spring引导:任何bean都没有实现ReactiveCrudepository   java无法注册我的自定义AbstractAnnotationConfigDispatcherServletInitializer   TCP连接上的java Caesar密码   java树集排序不正确   java如何在自定义查询中加载@ElementCollection?