Тег {% 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>