Тег {% static %} в Django

У вас на локальной машине статика может раздаваться по адресу /static/, но на сервере этот адрес часто меняется. Бывает что статика переезжает на другой сервер (CDN) или разработчики решают экономить на длине адреса и перевешивают статику на /s/.

Код надо писать так, чтобы адрес статики менялся одной настройкой в settings.py.

Что он делает

Тег {% static %} генерирует адрес на статику, например:

<img src="{% static 'images/hi.jpg' %}" />

Если в settings.py указано, что STATIC_URL ='/static/', то рендеринг шаблона приведёт к такому результату:

<img src="/static/images/hi.jpg" />

Тег {% static %} просто подставил в начало адреса /static/. Он подставляет STATIC_URL к адресу, который вы передадите.

Чтобы воспользоваться тегом {% static %}, добавьте {% load static %} в начало документа, без этого он не будет работать:

<!DOCTYPE html>
{% load static %}
<html lang="en">
  <head>
    <meta charset="UTF-8">
    ...
  </head>
  <body>
    <img src="{% static 'images/hi.jpg' %}" />
    ...
  </body>
</html>

Попробуйте бесплатные уроки по Python

Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.