2010-10-21 29 views
11

ı içerikli bir include.html şablon var varsayalım, daha net sorumu göstermek için:Django şablonu: Dahil edilen şablondaki engelleme, alt şablonun üzerine yazılmıyor?

{% block test_block %}This is include{% endblock %} 

Ben içerikle Parent.html böyle adlandırılan başka bir şablon var: Artık

This is parent 

{% include "include.html" %} 

Ben uzanan templated denilen child.html oluşturmak Parent.html:

{% extends "parent.html" %} 
{% block test_block %}This is child{% endblock %} 

Benim fikir olduğunu ch child.html render test_block ild.html, include.html dosyasındaki dosyanın üzerine yazabilir. Anlayışım gereği, bir şablon eklendiğinde olduğu gibi dahil edilir.

This is parent 

{% block test_block %}This is include{% endblock %} 

Yani child.html test_block üzerine yazmak gerekir: Yani benim durumumda, ben Parent.html eşittir düşünüyorum. Ama yapamayacağı gibi görünüyor. Niye ya? Bir çözüm var mı?

cevap

13

Bir şablon eklediğinizde, şablonu oluşturur ve ardından oluşturulmuş içeriği içerir. Django Dokümanlar

:

etiketi bir uygulaması olarak düşünülmelidir dahil "Bu subtemplate işlemek ve HTML dahil" değil bu subtemplate ayrıştırmak ve parçasıymış gibi içeriğini içerir" olarak, ebeveynin " Bu, dahil edilen şablonlar arasında paylaşılan bir durumun olmadığı anlamına gelir - her biri tamamen bağımsız bir oluşturma işlemidir.

bir geçici çözüm çocuk şablon şablonu yerine dahil şablonu dahil uzatmak zorunda olacaktır. Ardından, çocuk şablonunu ekleyin.