Ответ 1
Основываясь на том, что вы опубликовали до сих пор, похоже, что вы следуете документам django.contrib.staticfiles
. Я согласен с тем, что docs может быть трудно следовать, особенно если вы новичок в django.
Я считаю, что путаница проистекает из того, что django.contrib.staticfiles
имеет два режима работы:
- На этапе разработки, где используется сервер разработки
STATIC_URL
. Это будет путь, на котором будут размещаться ваши статические файлы.STATIC_URL = '/static/'
-
Убедитесь, что ваши файлы находятся в правильных каталогах. По умолчанию
staticfiles
будет искать файлы в каталогеstatic/
каждого установленного приложения, а также в каталогах, определенных вSTATICFILES_DIRS
., (Это зависит от бэкендов, перечисленных вSTATICFILES_FINDERS
). В вашем случае вы, вероятно, захотите указать свой каталог вSTATICFILES_DIRS
:STATICFILES_DIRS = ( 'C:/Users/Dan/seminarWebsite/static/', )
-
Сделайте вид доступным, добавив следующее к концу из
urls.py
:from django.contrib.staticfiles.urls import staticfiles_urlpatterns urlpatterns += staticfiles_urlpatterns()
-
Убедитесь, что у вас есть
DEBUG = True
вsettings.py
.
Что это.
Если вы запустите сервер dev (./manage.py runserver
), вы сможете получить доступ к своему файлу через http://localhost:8000/static/images/vision.jpeg
(который служит C:/Users/Dan/seminarWebsite/static/images/vision/jpeg
).
Ссылка на статические файлы в ваших шаблонах
Существует два способа получить правильную ссылку для ваших статических файлов - используя тег staticfiles и сделать STATIC_URL
доступным для вашего шаблоны. Поскольку вы попытались использовать последнее, мы будем придерживаться этого.
-
Убедитесь, что у вас есть
'django.core.context_processors.static'
вTEMPLATE_CONTEXT_PROCESSORS
. Если вы не переопределилиTEMPLATE_CONTEXT_PROCESSORS
, тогда нечего делать, так как он должен быть по умолчанию. -
При создании шаблона убедитесь, что вы используете RequestContext. Пример:
from django.template import RequestContext # ... def some_view(request): # ... return render_to_response('my_template.html', { "foo" : "bar", # other context }, context_instance = RequestContext(request))
Теперь вы можете использовать следующее в my_template.html
:
<a href="{{ STATIC_URL }}images/vision.jpeg" />
Хостинг статических файлов на рабочем сервере.
Если все статические файлы, которые вам нужно обслуживать, хранятся в одном каталоге (C:/Users/Dan/seminarWebsite/static
), то вы почти там. Просто настройте свой веб-сервер для размещения этого каталога на /static/
(или что бы вы ни установили STATIC_URL
), и вам хорошо идти.
Если у вас есть файлы, разбросанные по разным каталогам и/или конкретным приложениям, то вам нужно будет их сопоставить.
-
Установите
STATIC_ROOT
в каталог, в котором вы хотите сохранить сопоставленные файлы. -
Запустите
./manage.py collectstatic
, чтобы выполнить сортировку. -
Настройте свой веб-сервер для размещения этого каталога (
STATIC_ROOT
) на/static/
(или что бы вы ни установилиSTATIC_URL
).