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

Каков абсолютный путь BASE DIR?

Django новичок здесь. Мне трудно понять смысл:

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

и

STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static')
STATICFILES_DIRS = (
    os.path.join(os.path.dirname(BASE_DIR), "static", "static"),
)

Что здесь происходит?

Я считаю, что " файл" - это файл settings.py, в котором мы находимся (?), поэтому BASE_Dir - это две папки из этого...? то есть с файлом manage.py?

Итак, STATIC_ROOT, будет один? или два? каталоги вверх от BASE_DIR. Будет ли для меня создана STATIC_ROOT FOLDER? Или мне нужно сделать так называемый "статический"?

└── MY_PROJECT
    ├── BASE_DIR
    │   ├── MY_APP
    │   │   └── settings.py
    │   └── manage.py
    └── static

Правильно ли это для этого примера? Тогда какая черта/где черт будет STATIC_FILES_DIRS?

4b9b3361

Ответ 1

Если вы хотите знать, где находится BASE_DIR, вы можете распечатать его на терминал, просто добавьте эту строку в свои настройки .py:

print "base dir path", BASE_DIR

и runerver для просмотра результатов.

Ответ 2

Если ваш settings.py настроен следующим образом, ваша файловая система выглядит так:

└── MY_PROJECT
    ├── BASE_DIR
    │   ├── MY_APP
    │   │   └── settings.py
    │   └── manage.py
    └── static        -> STATIC_ROOT
        └── static    -> STATICFILES_DIRS

Но это не очень хорошая конфигурация, потому что она смешивает собранную статистику и каталог, в котором Django пытается найти статические файлы (например, их собирать). Может быть, лучше использовать это:

└── MY_PROJECT
    └── BASE_DIR
        ├── my_app
        │   ├── settings.py
        │   └── static              -> STATICFILES_DIRS
        ├── manage.py
        └── deployment
            ├── collected_static    -> STATIC_ROOT
            └── media               -> MEDIA_ROOT

# settings.py
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
STATICFILES_DIRS = (os.path.join(
    BASE_DIR, "my_app", "static"),)
STATIC_ROOT = os.path.join(
    os.path.dirname(BASE_DIR), "deployment", "collected_static")
MEDIA_ROOT = os.path.join(
    os.path.dirname(BASE_DIR), "deployment", "media")

Теперь вы можете легко развернуть свои статические и мультимедийные файлы с помощью своего любимого веб-сервера (Apache, Nginx и т.д.), указав его в каталог "развертывание".

Update:

Я добавил также рекомендуемую конфигурацию для MEDIA_ROOT и изменил путь для собранного статического файла.

Ответ 3

BASE_DIR - это каталог проектов Django. В том же каталоге, где находится manage.py.