Тег django { % block content % } не работает

Итак, я только начал изучать django, я понял основные блоки тегов, но это не работает хорошо на моей странице. у меня есть страница под названием index.html и question.html

я пишу так в index.html

<body>
    <div>
        <div>
            sum content
        </div>
        <div>
            { % block content % }

            { % endblock % }
        </div>
    </div>
</body>

и вот так в question.html :

{ % extends 'index.html' % }

{ % block content % }
<<my content>>
{ % endblock % }

но содержимое в question.html не появилось в index.html. Я проверил свои настройки и не установил django-stub, как в других случаях.

и если вы хотите узнать структуру, то она выглядит так:

djangoProject1
   >djangoProject1
   >myweb
   >static
   >templates
      -index.html
      -question.html

Заранее спасибо!

Просто удалите пробелы в блоках тегов везде, как это:

Изменить это:

{ % block content % }

К этому:

{% block content %}

Подобно другим блокам тегов.

Похоже, что вы немного запутались в том, как работают шаблоны. index.html является родительским/базовым шаблоном, потому что он расширяется (через тег {% extends 'index.html' %}). question.html является дочерним шаблоном, что означает, что если вы не внесете никаких изменений, он унаследует все от index.html.

Дочерний шаблон может переопределять части родительского шаблона с помощью тегов {% block %}. Таким образом, при рендеринге веб-страницы код из блока в родительском шаблоне вообще не используется (если он там был). При непосредственном рендеринге родительского шаблона такой замены не произойдет, поскольку он ничего не расширяет.

Таким образом, HTML для ваших файлов должен выглядеть следующим образом

index.html

<body>
    <div>
        <div>
            sum content
        </div>
        <div>
        </div>
    </div>
</body>

question.html

<body>
    <div>
        <div>
            sum content
        </div>
        <div>
            <<my content>>
        </div>
    </div>
</body>

Итак, да, содержимое question.html не должно появляться в index.html. Это работает наоборот, вся структура index.html используется для question.html, за исключением того, что вы переопределяете.

Если вы хотите, чтобы индекс по умолчанию имел некоторое содержимое, вы можете разместить код внутри блока content. При необходимости он будет заменен любыми дочерними шаблонами, но при загрузке только index.html он все равно будет виден.


Если вы действительно пытаетесь вставить что-то в index.html, обратите внимание на тег include. Он позволяет повторно использовать общие разделы сайта на разных веб-страницах. Но вы бы не расширяли базовый шаблон внутри любого шаблона, который вы планируете включить.

Вернуться на верх