Судя по тому, что вы уже опубликовали, похоже, что вы следуете документам для django.contrib.staticfiles
. Я согласен с тем, что документам может быть трудно следовать, особенно если вы новичок в django.
Я полагаю, что путаница связана с тем, что django.contrib.staticfiles
имеет два режима работы:
- На этапе разработки, где используется сервер разработки , он динамически ищет статические файлы в предопределенных каталогах и делает его доступным в
STATIC_URL
- Для развертывания он помогает объединять статические файлы в один каталог (определенный с помощью
STATIC_ROOT
), так что статические файлы могут размещаться на веб-сервере, подходящем для статических файлов. Это сопоставление выполняется с использованием python ./manage.py collectstatic
.
Вот краткое изложение того, как начать работу. У меня не было возможности попробовать это, поэтому могут быть ошибки. Надеюсь, это поможет вам начать и, по крайней мере, поможет вам понять документы. Если есть сомнения, обратитесь к документации.
Размещение статических файлов на сервере разработки
Убедитесь, что у вас есть 'django.contrib.staticfiles'
в INSTALLED_APPS
Укажите STATIC_URL
. Это путь к вашим статическим файлам.
STATIC_URL = '/static/'
Убедитесь, что ваши файлы находятся в правильных каталогах. По умолчанию staticfiles
будет искать файлы в каталоге static/
каждого установленного приложения, а также в каталогах, определенных в STATICFILES_DIRS
. (Это поведение зависит от бэкэндов, перечисленных в STATICFILES_FINDERS
).
В вашем случае вы, вероятно, захотите указать свой каталог в STATICFILES_DIRS
:
STATICFILES_DIRS = (
'C:/Users/Dan/seminarWebsite/static/',
)
Сделайте вид доступным, добавив следующее к end из urls.py
:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
Убедитесь, что у вас есть DEBUG = True
в settings.py
.
Вот и все.
Если вы запустите свой сервер разработки (./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
).