根据操作系统自定义Django settings.py文件

时间:2012-09-04 13:47:56

标签: python django operating-system dropbox

我正在使用两台不同的机器,一台Windows和一台Mac Os X开发Django项目。我通过Dropbox同步了一切。问题是settings.py中的某些设置是单个字符串(例如MEDIA_ROOT或STATIC_ROOT)而不是元组。这意味着我可以设置一个正确的路径,假设STATIC_ROOT只用于两个操作系统中的一个。在另一个当然不会起作用。

我想知道是否存在识别OS python运行的方法,并根据它选择适当的设置。

2 个答案:

答案 0 :(得分:6)

settings.py文件只是python,因此您可以根据平台轻松切换语句。使用platform module

import platform

if platform.system() == 'Darwin':
    MEDIA_ROOT = 'something'
else:
    MEDIA_ROOT = 'somethingelse'

答案 1 :(得分:1)

您不应该首先设置绝对路径。使用os.path.dirname(__file__)之类的东西来获取settings.py所在的目录,然后将其与特定路径段合并,例如:

STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static')

然后,您运行的平台不再重要。 FWIW,通常存储基本路径,因为它经常需要,例如:

PROJECT_ROOT = os.path.dirname(__file__)
...
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')