2012-10-12 84 views
0

說我有一本字典,看起來像:在Django模板無效標識符訪問字典鍵

settings = { 
    'info:ip': '127.0.0.1', 
    'info:browser': 'chrome' 
} 

我想訪問這些項目在Django模板,如:

The IP is {{settings.info:ip}} . 

「info:ip」是一個有效的字典鍵,但不是有效的變量名或django模板名稱,我似乎無法得到它。

我意識到我可以使用不同的字典鍵,但由於幾個原因不方便。任何其他方式來獲取我的模板中的字典鍵?

回答

1

更新
或通用模板標籤利用任何文字串允許

from django.template import Template, Context, defaulttags 

@defaulttags.register.simple_tag 
def getter(d, key): 
    return d.get(key, '') 

>>> Template('{% getter settings "x:y" %}').render(Context({"settings":{'x:y':1}})) 
1 

約寫一個過濾器什麼來解決它,然後

from django.template import Template, Context, defaultfilters 

@defaultfilters.register.filter(is_save=True) 
def tiny_replace(value): 
    r = {} 
    for k, v in value.iteritems(): 
     r[k.replace(':', '_')] = v 
    return r 

>>> Template('{% with s=settings|tiny_replace %}{{s.x_y}}{% endwith %}').render(Context({"settings":{'x:y':1}})) 
1 
0

這個怎麼樣

settings = { 
    'info': { 
     'ip': '127.0.0.1', 
     'browser': 'chrome' 
    } 
} 

並使用它像{{ settings.info.ip }}? 這是你的選擇嗎?