Ответ 1
Возьмите глобальное значение __file__
и используйте на нем различные функции os.path
.
import os.path
SITE_ROOT = os.path.dirname(os.path.realpath(__file__))
Хорошо, поэтому я вспоминаю, что есть несколько команд, которые вы можете поместить в файл settings.py
, чтобы в основном, когда вы перемещаете проект django в другой каталог, он не получит foo-bar'd.
Я знаю, что могу просто сделать это, имея строковую переменную везде, где упоминается домашний каталог, но есть ли более элегантный способ сделать это?
Возьмите глобальное значение __file__
и используйте на нем различные функции os.path
.
import os.path
SITE_ROOT = os.path.dirname(os.path.realpath(__file__))
Архитектура проекта в Django
корень/
Внутри 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/. Это КОРТ ПРОЕКТА.
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)
PROJECT_PATH = os.path.abspath(os.path.dirname(__name__))