Задать вопрос
@bubaley

Почему django берет static не из папки проекта?

Здравствуйте
Опубликовал django на хостинге по инструкции хостинга (beget)
Хостинг стучится в public_html где лежит .htaccess, в этой же папке находится проект app
Соответственно, static-а проекта лежит в app/static
Но django не хочет брать файлы из public_html/app/static. А если у статики переложить в public_html/static, то все работает отлично.
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DEBUG = False
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

В чем может быть загвоздка?
Перепробовал уже много всего, но ничего не помогает.
  • Вопрос задан
  • 1261 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
@bubaley Автор вопроса
Как оказалось, действительно, лучше опубликовать на VDS. Потому что, часто не все хостинги позволяют настроить папку откуда брать статику.
Так как Django при DEBUG=False не раздает статику, ее должен раздавать веб-сервер, например nginx
location /static {
    root /home/www/__your_aplication__;
    try_files $uri =404;
}
# из этой настройки запросы будут уходить в /home/www/__your_aplication__/static

в STATIC_ROOT указывается дерриктория (идентичная с путем, указанным выше), в которую будет собирать статику django с помощью команды collectstatic.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@kabantver
Разработчик Python
В папке .../public_html/ нужно сделать симлинк на папку static в вашем проекте.
В моем варианте это выглядело так:
************************/public_html [0] $ ln -s "путь_до_папки_статик_начиная_от_папки_public_html"/static/ static

ls -la папки ..../public_html/:
618d293d42d0e134824891.png

В вашем случае - *************/public_html [0] $ ln -s /app/static/ static
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы