Подтвердить что ты не робот

Самостоятельное открытие корня django

Хорошо, поэтому я вспоминаю, что есть несколько команд, которые вы можете поместить в файл settings.py, чтобы в основном, когда вы перемещаете проект django в другой каталог, он не получит foo-bar'd.

Я знаю, что могу просто сделать это, имея строковую переменную везде, где упоминается домашний каталог, но есть ли более элегантный способ сделать это?

4b9b3361

Ответ 1

Возьмите глобальное значение __file__ и используйте на нем различные функции os.path.

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

Ответ 2

Архитектура проекта в Django

  • корень/

    • app1/
    • app2/
    • ...
    • Основной /
      • settings.py

Внутри 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/. Это КОРТ ПРОЕКТА.

Ответ 3

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)

Ответ 4

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