我正在使用两台不同的机器,一台Windows和一台Mac Os X开发Django项目。我通过Dropbox同步了一切。问题是settings.py中的某些设置是单个字符串(例如MEDIA_ROOT或STATIC_ROOT)而不是元组。这意味着我可以设置一个正确的路径,假设STATIC_ROOT只用于两个操作系统中的一个。在另一个当然不会起作用。
我想知道是否存在识别OS python运行的方法,并根据它选择适当的设置。
答案 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')