当django启动时创建内存常量

时间:2012-04-03 18:16:38

标签: python django

我有这种设置:

  1. 重写了BaseRunserverCommand,它添加了另一个获取字符串标记的选项(--token)。
  2. 将其存储在名为“vault”的应用中作为全局变量
  3. 然后继续执行BaseRunserverCommand
  4. 现在稍后当我尝试在服务器启动后获取此全局变量的值时,我无法看到该值。这是否超出范围?如何存储在django启动之前输入的这一次令牌?

2 个答案:

答案 0 :(得分:2)

根据命令行选项的名称判断,这听起来像一个配置变量 - 为什么不像所有其他配置一样将它放在settings.py中?

如果它是一个您不希望签入版本控制的安全值,我看到的一种模式是在{{1}中放置安全或环境敏感(即仅在生产或开发中有意义)配置未签入版本控制的文件,然后添加到local_settings.py

的末尾
settings.py

(请注意,有些人喜欢invert the import relationship,然后在try: from local_settings import * except ImportError: # if you require a local_settings to be present, # you could let this exception rise, or raise a # more specific exception here pass 的命令行中使用--settings - 这也有效,但要求您始终记得使用{{ 1}}。)

答案 1 :(得分:2)

Python中没有“全局变量”这样的东西可以从任何地方获得。您需要先导入所有名称才能使用它们。

尽管你这样做了,但它实际上并不适用于制作。不仅没有运行命令来启动生产服务器(它由Apache或您正在使用的任何服务器软件自动完成),服务器通常在多个进程中运行,因此必须在每个进程中设置变量。它们。

你应该使用一个设置,正如dcrosta建议的那样。