0

私は、WindowsとMacOsXの2つの異なるマシンを使用してDjangoプロジェクトに取り組んでいます。すべてをDropbox経由で同期しています。問題は、settings.pyの一部の設定が単一の文字列(例:MEDIA_ROOTまたはSTATIC_ROOT)であり、タプルではないことです。つまり、2つのOSのうちの1つだけにSTATIC_ROOTの適切なパスを設定できるということです。もちろん、もう一方では機能しません。

OS pythonが実行されていることを認識し、それに応じた条件から適切な設定を選択する方法があるかどうか疑問に思いました。

4

2 に答える 2

6

settings.pyファイルは単なるPythonであるため、プラットフォームに基づいてステートメントを簡単に切り替えることができます。platformモジュールを使用します:

import platform

if platform.system() == 'Darwin':
    MEDIA_ROOT = 'something'
else:
    MEDIA_ROOT = 'somethingelse'
于 2012-09-04T13:49:39.067 に答える
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')
于 2012-09-04T14:21:32.410 に答える