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