2011-04-09 92 views
0

我想知道如何在我的模板中複製幾個字符串。具體來說,我正在尋找在我的頁面頂部創建一個目錄導航類型的鏈接,並將鏈接指向更遠的內容(如http://www.google.com/transparencyreport/faq/)。我希望鏈接與下面的章節標題具有相同的文本。如何避免在我的Django模板中重複字符串?

我曾考慮過使用{%with%},但是必須在{%with}塊中嵌套所有內容似乎很不方便。

Whats the best way to duplicate data in a django template?類似,但我沒有在任何地方繼承此模板,因此使用{%block%}並不是真正的選項。

回答

2

這看起來就像使用從視圖傳遞的模板變量(例如{{ link_name }})的情況。

您也可以使用template inclusion tag,其中包含具有重複信息的其他模板。

+0

+1爲包含 – 2011-04-09 11:08:44

+0

但這些只是短的字符串:單行節標題。爲每個文件創建一個文件比複製更糟糕,我認爲,所以這些靜態字符串放在視圖中。 – raylu 2011-04-09 21:17:09

+1

嗯。我明白你的意思。你可以使用類似於這個代碼片段的模板標籤:http://www.soyoucode.com/2011/set-variable-django-template,但我不確定以這種方式顛覆模板系統是個好主意。也許最好的辦法是將你想要顯示的字符串添加到某種類型的設置文件中作爲常量,然後通過你的視圖將它們傳遞給模板上下文。 – 2011-04-09 22:16:27

0

在您看來,您可能會破壞您的內容,因此可以單獨訪問頭文件作爲模板變量。你可能會存儲與每一個標題爲類型的字典列表相關的信息:

page_content = [ 
    { 
     'id':'header1', 
     'header': 'Text for Header 1' 
     'content' : 'Content Beneath header 1' 
    }, 
] 

然後,在你的模板,你可以像這樣的東西生成您的目錄:

{% for d in page_content %} 
    <a href="#{{ d.id }}">{{ d.header }}</a> 
{% endfor %} 

雖然內容你的頁面看起來是這樣的:

{% for d in page_content %} 
    <h1 id="#{{ d.id }}">{{ d.header }}</h1><p>{{ d.content }}</p> 
{% endfor %} 
+0

不幸的是,內容部分是巨大的。此外,他們只是不屬於意見... – raylu 2011-04-11 08:04:46

+0

我(可能是錯誤地)認爲將使用orm查詢內容。因此,不是對內容進行硬編碼,而是看起來像:「content = model_instance.content」。如果情況並非如此,這聽起來像你可能會考慮包含標籤的建議。 – 2011-05-14 02:55:55

相關問題