Настройка папки:
В корне вашего проекта должно быть что-то вроде:
/app1
/app2
/media
/static
/templates
urls.py
settings.py
manage.py
В папке media должно храниться что-то вродеизображения, файлы для загрузки и другие материалы, которые могут быть загружены при обычном использовании веб-сайта (т. е. после завершения разработки)
Папка static должна содержать все CSS / JS и другие материалыэто часть разработки сайта
Settings.py:
MEDIA_ROOT - это абсолютный путь сервера к статическомупапка упомянутая выше.Это означает, что это должно быть что-то вроде:
MEDIA_ROOT = "/User/Bob/Sites/MySite/Project_root/media/"
MEDIA_URL - это относительный URL-адрес браузера, с которого вы должны обращаться к своим медиа-файлам, когда вы просматриваете сайт.Это должно быть (обычно)
MEDIA_URL = "media/"
, что означает, что весь материал может быть просмотрен в http://example.com/media/
Аналогично, STATIC_ROOT должно быть что-то вроде
STATIC_ROOT = "/User/Bob/Sites/MySite/Project_root/static/"
и STATIC_URL be
STATIC_URL = "static/"
Обслуживание файлов:
Теперь, когда вы сказали django, где находятся эти папкиДолжны быть и правильные URL-адреса для доступа к ним, необходимо правильно обслуживать все запросы к папкам.
Обычно, когда вы работаете, вы хотите, чтобы веб-сервер позаботился об обслуживании ваших статических файлов и файлов мультимедиа.
Если вы разрабатываете, вы можете просто заставить сервер разработки djangoслужить им для вас.
Для этого вы указываете ему направлять все запросы, поступающие на http://example.com/media, на ваш MEDIA_ROOT, а все запросы, поступающие на http://example.com/static, на ваш STATIC_ROOT.
Для этого вы добавляете несколько URL-адресов в URLS.py, например:
from django.conf import settings
if settings.DEBUG:
urlpatterns += patterns('',
url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT,
}),
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.STATIC_ROOT,
}),
)
Дополнительно :
Если выЕсли у вас есть несколько приложений, каждое из которых имеет свои собственные файлы CSS и JS, вы, возможно, не захотите выбросить их в одну / static / папку.Возможно, было бы полезно поместить их в подпапки приложений, к которым они принадлежат:
/app1/static/ # Specific static folder
/app2/static/
/media/
/static/ # Root static folder
Теперь ваш веб-сервер / сервер разработки ищет только те статические файлы, в которых вы указали (например, корневую статическую папку).) поэтому вам нужно собрать все файлы в подпапках и скопировать их в корневую статическую папку.Вы можете сделать это вручную, но django предоставляет команду, которая сделает это за вас (в этом весь смысл статического приложения)
./manage collectstatic