2012-09-13 62 views
1

爲了更容易的模板繼承,我想動態地確定一個父母的姓名{%block%}名稱。如何在django模板中動態設置塊名稱?

爲此,我有兩個父模板。其中主要的一個是這樣的

# main parent 
... 
{% block details %}{% endblock %} 
... 

而另外一個:

# other parent 
... 
{% block content %}{% endblock %} 
... 

因爲這個模板是經常使用和塊命名的改變會導致大量的工作,我想的東西用布爾main_template指示要在子模板中使用哪個塊名稱:

# child template 
... 
{% block main_template|yesno:'details,content' %} 
... 
{% endblock %} 
... 

這不起作用。有沒有其他的方式來獲得我所描述的行爲?

回答

1

不,這不起作用 - 對{% block %}的參數是一個標籤,而不是一個值,所以你不能在那裏使用上下文變量。

可能有一些方法可以解決這個問題,但它們不會被維護。說實話,最好把努力放在(這應該只是一個搜索&替換操作),以便在不同的基本模板之間對齊塊名稱。

Django模板繼承的工作方式,子模板需要瞭解其父模板的塊結構。如果你有一個可以繼承幾個不同父母的子模板,那麼他們真的都需要有相同的結構。