我有一個元組作爲鍵的字典。例如:{('tags','1'):'name',('name','first'):'rik',('name','last'):'atee'}django打印元組鍵鍵盤字典
In django,例如,如何在('name','first')打印值?我可以用dict.items.1或dict.items.2來做 - 但訂購成爲一個問題。
我有一個元組作爲鍵的字典。例如:{('tags','1'):'name',('name','first'):'rik',('name','last'):'atee'}django打印元組鍵鍵盤字典
In django,例如,如何在('name','first')打印值?我可以用dict.items.1或dict.items.2來做 - 但訂購成爲一個問題。
Django模板語言有意限制您允許引用的內容。
例如,您必須使用點運算符來訪問屬性AND字典元素,這意味着您引用的密鑰必須是是字符串。
從文檔:
變量名必須由任何字母(A-Z)的,任何數字(0-9),下劃線或點(但不得以下劃線開頭)。
https://docs.djangoproject.com/en/dev/ref/templates/api/#variables-and-lookups
你的選擇是要麼(一)使用您的視圖Munge時間的元組鍵轉換成字符串格式或(b)您可以使用不同的模板引擎,它允許你參考任意鍵。 (理論上)所有舊模板都可以工作,並且你只需要獲得更多的功能。但是,選項(b)實際上並不如聽起來那麼糟糕,因爲它們是Django的模板語言,它們被設計爲Django模板語言的超集。我建議您結帳Jinja templating language,它具有您要查找的功能。
謝謝!我會看看b – rikAtee
在字典中的任何值可以通過其相應的鍵
所以訪問...
>>> foo = {('tags','1'): 'name', ('name','first'):'rik', ('name','last'):'atee'}
>>> foo[('name','first')]
'rik'
但是元組,作爲密鑰將可能只是最終會被混淆,而且容易出錯,爲什麼不使用類似{"tags": ['name'], "first":'rik', "last":'atee'}
的東西?
由於這是一個Django的問題,我猜他正在尋找Django模板變量語法來做到這一點,而不是純粹的Python。 – millimoose
@millimoose - 正確。 FWIW我使用元組作爲鍵,因爲這是pycassa數據庫查詢的輸出。它看起來很奇怪,但它有很多優點。 – rikAtee
嚴重的問題。你爲什麼用tupels作爲鑰匙? – lciamp
嚴肅的回答:不要這樣做。讓您的視圖功能將數據嵌入模板可以輕鬆訪問的表單中 - 這就是它首先要做的。 – millimoose
至於爲什麼:http://pycassa.github.com/pycassa/assorted/composite_types.html – rikAtee