Как включить внешние CSS, изображения и т. Д. В шаблон Django? - PullRequest
8 голосов
/ 15 августа 2011

В django все URL анализируются из файла urls.py.Таким образом, структура каталогов как таковая отсутствует.

Итак, что если вам нужно включить файл css в шаблон?

Есть ли способ без добавления его в URL.py файл?

Если нет, то вы сделаете новую запись в urls.py для каждого ресурса?

Ответы [ 3 ]

9 голосов
/ 15 августа 2011

См. Django HOWTO по статическим файлам .

В основном, в вашем файле конфигурации вы указываете специальный каталог для хранения статических файлов. Пример в документации:

STATIC_ROOT = "/home/jacob/projects/mysite.com/sitestatic"

Вы помещаете туда CSS-файлы, изображения и т. Д., И сервер будет знать, как обслуживать URL-адреса, соответствующие вашему статическому шаблону URL-адресов из этого каталога.

4 голосов
/ 10 июля 2017

Вам больше не нужно указывать STATIC_ROOT (для djangor> 1.10).Просто убедитесь, что

django.contrib.staticfiles

включен в INSTALLED_APPS

и

STATIC_URL = '/ static / '

в вашем файле settings.py

Создайте каталог с именем "static" в вашем каталоге приложений, а внутри созданного статического каталога - еще один подкаталог с именем вашего приложения и включите его.статические файлы там (вы также можете создать подкаталоги js, img, css внутри последнего каталога, основываясь на ваших предпочтениях, если вам нужно)

Затем укажите правильный путь в файле шаблона.Например:

src = "/static/my_app/example.js"

или

src = "/ static / my_app/js/example.js"

(при условии, что ваши файлы javascript находятся в каталоге с именем js)

В качестве альтернативы (намного лучше) определите путь с помощью статического тега шаблона:

{% load static %}
<script src="{% static "my_app/js/example.js" %}"></script>

Все, что вам нужно знать:

https://docs.djangoproject.com/en/1.10/howto/static-files/

2 голосов
/ 15 августа 2011

В своем корневом файле urls.py я использую этот шаблон для обслуживания статических файлов при локальной разработке.Я также добавляю параметр под названием SERVE_STATIC_MEDIA, чтобы я мог отделить его от DEBUG.

if settings.SERVE_STATIC_MEDIA:
    urlpatterns += patterns('',
        (r'^static/(?P<path>.*)$', 'django.views.static.serve', \
            {'document_root' : settings.MEDIA_ROOT}),
    )

Затем в шаблоне вы можете получить доступ к css, js, images, таким образом:

<link type="text/css" href="{{ MEDIA_URL }}css/foo.css" media="screen,projection" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...