django项目根自我发现

时间:2011-02-07 09:16:59

标签: django

好的,我记得有一些命令可以放在settings.py文件中,这样基本上当你将django项目移动到另一个目录时,它就不会被foo-bar'd了。

我知道我可以通过在提到主目录的任何地方都有一个字符串变量来做到这一点但是有更优雅的方法吗?

4 个答案:

答案 0 :(得分:84)

Django项目的架构

  • 根/

    • APP1 /
    • APP2 /
    • ...
    • 主/
      • settings.py

Inside settings.py:

SITE_ROOT = os.path.dirname(os.path.realpath(__file__)) - >给出文件settings.py: root / main / 的路径。这不是项目的根本

PROJECT_PATH = os.path.abspath(os.path.dirname(__name__)) - >给出了项目的根目录: root / 。这是项目的根本

答案 1 :(得分:42)

Django 1.8已将项目根目录包含为BASE_DIR

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

您可以通过导入settings

在您的应用中使用它
from django.conf import settings
...
...
print(settings.BASE_DIR)

答案 2 :(得分:39)

抓住__file__全球,并使用os.path中的各种功能。

import os.path
SITE_ROOT = os.path.dirname(os.path.realpath(__file__))

答案 3 :(得分:12)

PROJECT_PATH = os.path.abspath(os.path.dirname(__name__))