2016-06-21 3 views
0

djangoのドキュメントには、それが書いてあります。キーに特殊文字がある場合、Djangoテンプレート辞書ルックアップを行うにはどうすればいいですか?

foo = {'ba-r':'...} 

しかし、使用して:表記法は、私は辞書を持っている私のプロジェクトでは、次の順序

#Dictionary lookup. Example: 
foo["bar"] 
#Attribute lookup. Example: 
foo.bar 
#List-index lookup. Example: 
foo[bar] 

で検索を行います。表記法はエラーを引き起こします。これは、 'foo.ba-r'全体がドキュメントhereで説明されているように変数であるためです。

foo.ba-r 

辞書の 'ba-r'キーに正しくアクセスする方法はありますか?

+0

foo ["ba-r"]を使用できない理由はありますか? –

+2

[Djangoテンプレート内のハイフンを含む辞書キーにアクセスするにはどうすればいいですか?](http://stackoverflow.com/questions/8252387/how-do-i-access-dictionary-keys-that-c​​ontain- django-templates内のハイフン)と[djangoテンプレートのスペースを含むdictキー](http://stackoverflow.com/questions/1906129/dict-keys-with-spaces-in-django-templates) – solarissmoke

答えて

2

すでに発見したように、ParseErrorを上げることなく、テンプレート内のそのようなキーにアクセスすることはできません。あなたは、インスタンスのためa custom filterを使用することができます。

from django import template 

register = template.Library() 

@register.filter 
def get_key_value(some_dict, key): 
    return some_dict.get(key, '') 

そして

{{ entry | get_key_value:"ba-r" }} 

それとも、このようなキーが含まれていないので、あなたのdictionnary構造を変更するようにそれを使用します!

関連する問題