2012-10-20 50 views
1

所以,在template.html我用:在Django模板創建字典

{% if dict %} 
{{ s={} }} 
{% endif %} 

的錯誤是 - 無法解析餘數: '= {}' 從 'S = {}'。如何解決它?

回答

2

Django模板實在不應該被用於製作字典,就應該在你的意見作出,且只能基本處理應在模板中進行。

這是爲了嚴格遵守MVC設計模式。

從這裏看:https://docs.djangoproject.com/en/dev/topics/templates/

哲學

如果你有編程背景,或者如果你使用 到語言,如PHP,其混合編程代碼直接轉換成HTML, 你要記住,Django模板系統不是 ,只是將Python嵌入到HTML中。這是設計的:模板 系統是爲了表達表示,而不是程序邏輯。

Django模板系統提供,其功能類似於 一些編程結構的標籤 - 一個如果布爾測試標籤,用於循環等標籤 - 但這些不是簡單地執行作爲對應 Python代碼,和該模板系統將不會執行 任意的Python表達式。默認情況下,僅支持下面列出的標籤,過濾器和語法 (儘管您可以根據需要將自己的 擴展添加到模板語言中)。

通過外觀的東西你想創建一個dict基於一些條件。你應該重新排列你的邏輯並在視圖中創建dict - 你也可以通過這種方式來利用python的所有功能。

如果您更詳細地描述您的情況,可能會有大量的解決方法。

+0

哦,謝謝。我是Django的新手 – tim

+0

我在視圖中製作詞典,它在模板中起作用({{dict}})。但是爲什麼它不適用於dict ['dic的任何索引']? – tim

+0

實際上,你沒有。模板系統尋找變量'dict',而不是dict對象。 –

0

你不能在模板中做到這一點。這不是模板的用途。您應該在視圖或自定義模板標記上執行此邏輯。

0

你不能直接在模板中放入python代碼。但是,如果條件不變,您可以將變量設置爲特定值。你可以這樣做,使用with tag

{% with alpha=1 beta=2 %} 
    ... 
{% endwith %} 
+0

您不能在模板上創建'dict'。 'alpha = {}'不起作用。 –

+1

這真的很傷心,因爲用固定參數定義字典並不是真正的編程。以這種方式設置包含的部分模板將非常有用。例如,我有引導表單生成模板,我包含在不同的頁面模板中。我被迫在視圖中創建固定的字典,這真的不好。 PHP的方法可能是錯誤的,但是Django的方法也太有限了。 –