{% include %} против {% extends %} в шаблонах django

Когда особенно расширять шаблон и когда использовать include? Можно ли использовать такой контент, как раздел профиля пользователя (например, обо мне в углу нашего сайта)?


person sasquatch    schedule 19.05.2010    source источник


Ответы (3)


Расширение позволяет вам заменять блоки (например, «контент») из родительского шаблона вместо того, чтобы включать части для построения страницы (например, «верхний колонтитул» и «нижний колонтитул»). Это позволяет вам иметь один шаблон, содержащий ваш полный макет, и вы только «вставляете» содержимое другого шаблона, заменяя блок.

Если профиль пользователя используется на всех страницах, вы, вероятно, захотите поместить его в свой базовый шаблон, который расширяется другими, или включить его в базовый шаблон. Если вам нужен профиль пользователя только на нескольких страницах, вы также можете включить его в эти шаблоны. Если профиль пользователя тот же, за исключением нескольких страниц, поместите его в свой базовый шаблон внутри блока, который затем можно будет заменить в тех шаблонах, которым нужен другой профиль.

person ThiefMaster    schedule 19.05.2010
comment
Лучший обзор расширений/блоков/включений - person Philip007; 20.05.2013

См. о django наследование шаблонов.

Расширяет своего рода «включает» родительский шаблон, а затем может перезаписывать его части для другой функциональности.

Include делает простой рендеринг шаблона в текущем контексте.

person Unreason    schedule 19.05.2010
comment
Это изменилось, так как приведенная выше ссылка не дает примера или не объясняет наследование. - person Harlin; 05.06.2017
comment
Я думаю, что это может быть новая ссылка - person Sachin Tripathi; 29.05.2021

extends создает «отношение родитель-потомок». Существует вероятность перезаписи родительской функциональности в случае расширения. В то время как include просто отображает html-ответ.

person MUHAMMAD AWAIS BIN MAJID    schedule 30.07.2019