Flask信号:为什么不能修改信号上的数据?



Flask文档说:

还要记住,信号的目的是通知订阅者和不应鼓励订阅者修改数据

我想知道,为什么会这样?

我正在使用Flask-User库,我想在用户注册时为用户设置一些默认字段(例如:将displayname设置为等于username),然后更新数据库。Flask-User在用户注册时发送user_registered信号。为什么订阅信号并在其中更新db是一个坏主意?

这是over-round解决方案。我想我是一个强大的Drupal/PHP开发人员。直到第7个版本,一切都是使用钩子信号(Flask)构建的。当一切都建立在挂钩上时,项目就会变得一团糟。这是一个快速的过程,但很危险。信号被设计成用作观察者模式,它喜欢事件。这是主要思想。但是当我们能够更新上下文时,主题。它喜欢对链负责。主要问题是链条。因此,如果一项失败,另一项就会收到错误的状态。这是主要问题。有时很难找到一个失败的罪魁祸首。因为我们有来自不同对象的不同信号,这些改变了共同的范围。

你几乎可以扩展到任何地方,但是你不应该改变数据。要向右扩展,应该使用干净的OOP解决方案。

有时候我们需要改变一些逻辑。所以我们需要定义一个篮子我们需要改变什么。在Drupal 8中,我们使用了依赖注入容器——服务。服务在单独的文件中描述。所以我们可以改变关系和注入。

有一个有趣的库- https://pypi.python.org/pypi/Flask-Injector

最新更新