13

编辑我算错了 - 它被打印了两次,而不是四次。

我把这个放在我的settings.py

print 'ola!'

并且在启动时“ola”被打印了两次!这似乎是我的 pycharm django 项目有问题......有什么想法会发生这种情况吗?它不在循环或任何东西中(无论如何我都知道)

干杯!

是的,根据评论,仅称为“rohit”的用户已确定可以在此处找到解决方案:https : //stackoverflow.com/a/2110584/1061426 ~ 请参阅有关禁用重新加载的评论。

注意我现在还没有我的 Django 代码,所以我不知道 noload 会做什么。祝你好运,士兵们。

4

4 回答 4

14

如果您在 settings.py 中打印出线程 ID,您将看到 settings.py 实际上是在两个不同的线程上加载的。

有关更多信息,请参阅此 stackoverflow 响应本文

于 2013-03-16T20:31:33.877 回答
4

实际上 Django 所做的是在设置周围放置一个包装器。它基本上是一个对象(设置对象,如果你愿意的话),它可以让你访问一些直接的设置器,比如settings.WHATEVER,所以看起来你访问了 settings.py 中的全局变量。

我真的不记得为什么导入发生两次。当我研究django-dynamic-settings时,我曾研究过它,它使用与 Django 本身非常相似的方法。无论如何,如果您对“魔术”感兴趣,您可以按照从execute_from_command_line调用开始的流程manage.py

于 2012-06-22T07:24:21.133 回答
1

Django 对 settings.py 做了一些奇怪的事情,它会执行不止一次。我习惯于看到它被导入两次,不知道为什么在 PyCharm 中你会得到四次。您必须小心 settings.py 中带有副作用的语句。

于 2012-06-22T03:20:41.253 回答
1

一个密切相关的问题自 以来至少被问过两次。我可以补充一点,一个 Django 核心开发人员拒绝了这是任何类型的 Django 错误的想法。这是正常行为。

也可以从 Graham Dumpleton看到这个。

于 2014-09-29T00:39:33.540 回答