@DarkByte2015

Как организовать наследование шаблонов?

У меня есть базовый шаблон base.html, от него наследуется header.html, от него почти все остальные. Я передаю стили и скрипты через наследование вот так:

в base.html
<script type="text/javascript" src="{% static 'js/base.js' %}"></script>
{% block scripts %}{% endblock %}


а в остальных вьюхах переопределяю его
{% block scripts %}<script type="text/javascript" src="{% static 'js/header.js' %}"></script>{% endblock %}


Проблема в том что это работает в хедере, но в более вложенных вьюхах они начинают перекрывать стили и скрипты хедера. Может надо как-то по другому это организовать?

И еще один вопрос. В хедере у меня выводится имя пользователя со ссылкой на профиль. От хедера наследуются почти все вьюхи и мне приходится везде прокидывать юзера вот так:

в header.html
<div>{% block username %}{% endblock username %}</div>


во вложенных вьюхах везде
{% block username %}<a href="{% url 'accounts:profile' %}">{{ user.username }}</a>{% endblock username %}


+ приходится передавать в каждую вьюху юзера. Можно ли как-то по другому сделать? Чтобы модель юзера сделавшего запрос (request.user) автоматически прокидывалась везде?
  • Вопрос задан
  • 367 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
В наследниках header.html
{% block scripts %}
{{ block.super }}
<script type="text/javascript" src="{% static 'js/footer.js' %}"></script>
{% endblock %}

Вместо {{ block.super }} подставится содержимое родительского блока.

А имя пользователя можно выводить или не выводить процессором контекста.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы