2009-05-05 104 views
0

變量我只是想在孩子模板來定義body標籤的id屬性。第一個解決方案完美的作品:如何處理模板繼承

base.html文件:

[body{% block bodyid %}{% endblock %}] 

child.html:

{% block bodyid %} id="myId"{% endblock %} 

它的簡單和冷靜!但我不喜歡在每個子模板中指向id =「myId」。我只想將值'myId'發送到父模板,它放到id =「....」。所以,我發明了這種方法:

base.html文件:

[body{% block bodyid %} id={{ bodyid }}{% endblock %}] 

child.html:

{% block bodyid %} 
    {% with 'myId' as bodyid %} 
     {{ block.super }} 
    {% endwith %} 
{% endblock %} 

但它是可怕的,乏味的比較第一個解決方案。有沒有什麼好方法可以做到這一點?

這個問題是更深層次的,不是管理bodyId。我想,我試圖通過標準的Django模板的繼承來發現和組織子模板系統。

回答

2

在基本模板:

<body id="{% block bodyid %}{% endblock %}"> 

在子模板:

{% block bodyid %}myId{% endblock %} 

如果我正確理解你的問題,這應該是足以達到你想要的東西;僅發送actualy ID(myId)到基座模板。

+0

這是我一直使用的方法 – Rasiel 2009-05-06 03:53:12

+0

年,但我不想留空ID =「」,當我沒有在child.html – ramusus 2009-05-06 07:43:06

0

你,如果你願意的話,通過您的代碼中設置這一點 - 讓你的ID是你的上下文對象的一部分,爲此並不需要在子模板,只是稱他們的意見將被輸入。

然後你可以告訴你的基本模板,從上下文對象獲得的ID,或者更確切地說,只是使用它的模板語法:

<body id="{{ body_id }}"> 

個人喜好在這裏,當然,這取決於結構你的模板和視圖,但它的方式我會這樣做。