重写后,Django全局设置参数会受到影响吗?

时间:2013-06-07 08:23:06

标签: django

在django / conf / global_settings.py

DEBUG=False

在我的项目settings.py

DEBUG=True

但是当我从global_settings.py访问DEBUG时

from django.conf import settings
print settings.DEBUG   //True

它的印刷真的不是假的,为什么?

我的第二个问题是

如果Django必须为每个项目设置文件(myproj / setting.py)提供DEBUG = True,那么为什么不能在global_settings.py中使DEBUG = True而不是DEBUG = False?

1 个答案:

答案 0 :(得分:0)

[1]您的settings.py文件会覆盖您的全局设置,详见django documentation

来自文档:

  

这是Django在编译设置时使用的算法:

     
      
  • 从global_settings.py加载设置。
  •   
  • 从指定的设置文件加载设置,根据需要覆盖全局设置。
  •   

此外,如果您认为使用from django.conf import settings导入全局设置,则实际上并未访问模块,而是一个对象(为什么您无法从django.conf.settings import DEBUG运行)并且该对象是输出上面的算法。

[2]您必须为每个项目指定DEBUG=True(而不是在global_settings.py文件中指定)的原因是出于安全原因。

debug参数向项目显示许多个人信息,这对于开发中的调试很有用,但从不在生产中访问。所以Django要求用户明确指定启用DEBUG