Как узнать, где мой сайт ищет css и медиа - PullRequest
1 голос
/ 24 января 2020

Я реализовал трясогузку на своем сайте, и когда я запускаю ее в производство, она не находит css или каких-либо изображений. Я запустил

python manage.py collectstatic

, и все мои css находятся в каталоге с именем static_files в том же каталоге, что и manage.py .

В base.py У меня есть:

PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_DIR = os.path.dirname(PROJECT_DIR)
....
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static_files')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "static_media")

На моем сайте разработки BASE_DIR это каталог с static_files , но он делает Похоже, что его нельзя найти на производственной площадке.

Можно ли как-нибудь проверить, где рабочая версия ищет css, например, в HTML?

[Редактировать] Я посмотрел ответы на этот вопрос , и он не затрагивает суть моей проблемы, заключающейся в том, что определенный необходимый код не вызывался, когда для DEBUG установлено значение False

Ответы [ 2 ]

0 голосов
/ 24 января 2020

В ссылках на ресурсы stati c в шаблонах обязательно используйте тег шаблона {% static ... %} ( reference ). В ссылках на медиа-файлы в шаблонах обязательно ставьте префикс {% get_media_prefix %} ( reference ). Кроме того, я обычно использую одно и то же окончательное обозначение для STATIC_URL и STATIC_ROOT (то есть /static/, а не /static/ для одного и static_files для другого). Вот как я объявляю эти переменные:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, STATIC_URL.replace('/', ''))

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, MEDIA_URL.replace('/', ''))
0 голосов
/ 24 января 2020

Вам необходимо включить следующий код в urls.py в каталоге вашего проекта:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls.static import static
...
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

По какой-то причине это было в разделе , если в :

if setting.DEBUG = True

и для DEBUG было установлено значение False. Если я перенесу его в основную часть модуля, он будет отлично работать

...