Установите BASE_DIR и PROJECT_DIR соответствующим образом для моего проекта Django, чтобы захватить мои STATICFILES_DIRS - PullRequest
0 голосов
/ 23 апреля 2019

Ниже приведена структура моего проекта в Django 1.11.

repo-directory/
├── addons
|   |__ project1
|       |__ static
|       |__ template
|       |__ model.py
|   |__ project2
|       |__ static
|       |__ template
|       |__ model.py
├── config
│   ├── settings.py
│   └── urls.py
|   └── wsgi.py
└── manage.py

Что я пытаюсь сделать, так это настроить STATICFILES_DIRS, чтобы он знал, где находится моя статическая папка. Итак, я сделал следующее внутри моего settings.py файла, но не решил, что он работает должным образом.

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
PROJECT_DIR = os.path.abspath(os.path.dirname(__file__))
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

STATICFILES_DIRS = (
    os.path.join(PROJECT_DIR, 'static'),
    os.path.join(PROJECT_DIR, "static/fonts/"),
    os.path.join(PROJECT_DIR, "static/extras/"),
    os.path.join(PROJECT_DIR, "static/img/"),
    os.path.join(PROJECT_DIR, "static/js/"),
)

Любая помощь будет оценена.

WSGI config

"""
WSGI config for config project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/
"""

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")

application = get_wsgi_application()

1 Ответ

1 голос
/ 23 апреля 2019

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

STATICFILES_DIRS = [
    os.path.join(PROJECT_DIR, "addons/project1/static"),
    os.path.join(PROJECT_DIR, "addons/project2/static"),
]

Но если у вас есть addons.project1 и addons.project2 в вашем INSTALLED_APPS, то вы можете просто сделать следующее, не перечисляя ничего в STATICFILES_DIRS:

STATICFILES_FINDERS = [
    ...,
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    ...,
]

ОБНОВЛЕНИЕ:

Однако я бы предложил изменить ваши PROJECT_DIR и BASE_DIR следующим образом:

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

, а затем обновить вашSTATICFILES_DIRS следующим образом, если вы собираетесь использовать STATICFILES_DIRS:

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "addons/project1/static"),
    os.path.join(BASE_DIR, "addons/project2/static"),
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...