Наследование шаблонов в Django. Нужна помощь в использовании extends

ComicSphinx

Новичок
Пользователь
Янв 3, 2022
7
0
1
Привет!
Недавно начал изучать Django, застопорился на наследовании шаблонов. Имею два шаблона в папке templates/app:


base.html

Python:
{% load static %}
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <link rel="stylesheet" href="{% static 'css/main.css' %}">
    </head>
    <body>
        <div class="grid">
            <div class="left-side"></div>

            <div class="menu">
                <h1>test</h1>
                <a href="">About me</a>
                <a href="">Code</a>
            </div>

            <div class="content">
                {% block aboutme %}{% endblock %}
            </div>

            <div class="right-side"></div>
        </div>
    </body>
</html>

aboutme.html
Код:
{% extends 'app/base.html' %}

{% block aboutme %}
    <p>Hello world ;)</p>
{% endblock %}

aboutme.html расширяет base.html.
При запуске сайта, в base.html не попадает содержимое блока aboutme, см. скриншот 1.

При этом, если перейти на страничку /about (которая рендерит шаблон aboutme), то на ней можно наблюдать элементы из base.html и блок aboutme, см. скриншот 2

Разве, оно должно работать не наоборот? В base.html рендерится блок about me?

Версия Django: 4.0.3
 

Вложения

  • скриншот 1.png
    скриншот 1.png
    149,4 КБ · Просмотры: 2
  • скриншот 2.png
    скриншот 2.png
    150,7 КБ · Просмотры: 2

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
Разве, оно должно работать не наоборот?
нет

грубо говоря, вы включаете base.html в aboutme.html, и в aboutme.html заполняете блок, который объявили в base.html
 

ComicSphinx

Новичок
Пользователь
Янв 3, 2022
7
0
1
нет

грубо говоря, вы включаете base.html в aboutme.html, и в aboutme.html заполняете блок, который объявили в base.html
А что я в итоге должен открывать? aboutme?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
А что я в итоге должен открывать? aboutme?
base.html на то и называется базовым шаблоном, он вообще не должен открываться нигде напрямую, в нем должны быть реализованы все разметки и все блоки для заполнения
его нужно везде включать в другие html и заполнять блоки, которые объявили в base.html

upd
ну и базовых шаблонов может быть не один...
 

ComicSphinx

Новичок
Пользователь
Янв 3, 2022
7
0
1
base.html на то и называется базовым шаблоном, он вообще не должен открываться нигде напрямую, в нем должны быть реализованы все разметки и все блоки для заполнения
его нужно везде включать в другие html и заполнять блоки, которые объявили в base.html
Не совсем понятно.
Часто шаблоны используются для включения таких вещей, как шапка/подвал, и другие элементы. Какой шаблон в этом случае следует открывать?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
Часто шаблоны используются для включения таких вещей, как шапка/подвал, и другие элементы
это и делается в base.html

Какой шаблон в этом случае следует открывать?
открывать следует html, которые унаследовали base.html, в вашем случае - aboutme.html, так как в них вы заполняете блоки, которые объявили в base.html
 

ComicSphinx

Новичок
Пользователь
Янв 3, 2022
7
0
1
это и делается в base.html


открывать следует html, которые унаследовали base.html, в вашем случае - aboutme.html, так как в них вы заполняете блоки, которые объявили в base.html
Спасибо!
Вроде, вкурил
 

Форум IT Специалистов