Настройка статических и медиа - файлов в Django

lepiloff

Jan. 10, 2018, 4:28 p.m.

Для начала определимся, что есть что. Статические файлы - все файлы которые создаются в процессе разработки сайта и не имеющие отношение к django (css, js, каринки и т.д.). Медиа файлы - все что загружает пользователь через формы сайта, либо содержимое полей модели, подгружаемое через админку (аватарки, изображения, файлы).

STATIC_ROOT - изначально пустая папка, сюда будет собирать статику команда collectstatic

STATIC_URL  -  URL  для доступа к статике в  шаблонах

STATICFILES_DIRS - специфичная для проекта статика. Для неё можно создать папку в корне, в примерах назовём эту папку assets в которой разместим все наши статические файлы

Исходя из этого получим следующие переменные, которые необходимо добавить в файл настроек:

settings.py

STATIC_URL = '/static/' 
STATICFILES_DIRS = ( os.path.join(PROJECT_ROOT, 'static'), )

Теперь добавим настройки для медиа-файлов

settings.py

MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media')
MEDIA_URL = '/media/' 

В файл с шаблонами добавим url для обработки медиафайлов

urls.py

urlpatterns = [
    url(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT,}),
    url(r'^admin/', admin.site.urls),       
]

Для локального сервера этих настроек достаточно, для боевого придется еще немного потрудиться.

 

django