Python 快速列出Django项目的所有设置

Python 快速列出Django项目的所有设置,python,django,Python,Django,对于python专家来说,这可能不是一个困难的问题,所以请提供帮助。我想快速列出django项目的所有设置。我想要一个简单的python脚本(在一个单独的文件中)。我是这样开始的: from django.conf import settings settings.configure() settings_list = dir(settings) for i in settings_list: settings_name = i print settings_name 这样

对于python专家来说,这可能不是一个困难的问题,所以请提供帮助。我想快速列出django项目的所有设置。我想要一个简单的python脚本(在一个单独的文件中)。我是这样开始的:

from django.conf import settings

settings.configure()
settings_list = dir(settings)

for i in settings_list:
    settings_name = i
    print settings_name
这样我就可以得到所有设置的名称。但是,在每个
设置\u name
之后,我想打印它的值。尝试了很多方法。看起来这些设置实际上是空的。例如:

print settings.INSTALLED_APPS
返回空列表。我从django根目录和项目的虚拟环境中执行脚本


请为我的Django项目提供打印所有设置的正确方法。

这不是我期望的答案,但我找到了另一个很好的解决方案,如何打印Django项目的所有设置

这可以通过安装python包django打印设置来实现:

pip install django-print-settings

我从这里找到的。有关设置和使用方法,请参考该网站。

必须回答两个问题:1)设置为空2)如何在设置中迭代属性和值

关于空设置-参考

应该行得通,但由于某种原因,对我来说不行。因此,下面的代码对我很有用:

from django.conf import settings
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'my_django_project.settings'
print settings.SECRET_KEY
然后为了从设置对象中收集属性和值,我使用了下面的代码,我实际上是从中借用的:

总而言之,我的print_settings.py文件中的完整代码现在如下所示:

from django.conf import settings
import os

os.environ['DJANGO_SETTINGS_MODULE'] = 'my_django_project.settings'

a_dict = {}

for attr in dir(settings):
    value = getattr(settings, attr)
    a_dict[attr] = value

for key, value in a_dict.items():
            print('%s = %r' % (key, value))

您可以调用Django的内置:

a_dict = {}

for attr in dir(settings):
    value = getattr(settings, attr)
    a_dict[attr] = value

for key, value in a_dict.items():
            print('%s = %r' % (key, value))
from django.conf import settings
import os

os.environ['DJANGO_SETTINGS_MODULE'] = 'my_django_project.settings'

a_dict = {}

for attr in dir(settings):
    value = getattr(settings, attr)
    a_dict[attr] = value

for key, value in a_dict.items():
            print('%s = %r' % (key, value))
import django, os
from django.conf import settings
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' # Settings will pick this up on lazy init.
for attr in dir(settings):
  print "%-40s: %s" % (attr, getattr(settings, attr))
from django.core.management.commands import diffsettings

output = diffsettings.Command().handle(default=None, output="hash", all=False)

desensitized = []
for line in output.splitlines():
    if "SECRET" in line or "KEY" in line:
        continue
    desensitized.append(line)
print("\n".join(desensitized))