djangoのテンプレートで辞書にアクセスする際に以下のように指定したらTemplateSyntaxErrorになってしまった。
{{ dict['key'] }}正しくは以下のようにする必要がある。
{{ dict.key1 }}しかし、これではキー変数で指定したい場合はアクセスできない。
何か方法はないか調べたところdjangoのCustom Filterという機能を使えばなんとかなるようだ。
早速、Custom Filterを作成する
というわけでCustom Filterを作成したいがそのまえにmanage.py startappで作成されたフォルダに新たにtemplatetagsフォルダを作成する。そして、作成したフォルダに以下のようなファイルを作成する。
from django.template import Library
register = Library()
@register.filter
def get_value(value, key):
    if (key in value.keys()):
        return value[key]
    else:
        return Noneあとはテンプレートで読み込んで指定するだけ
Custom Filterの作成が済んだら、テンプレートで以下のように指定すればよい
{{% load <Custom Filterのファイル名> %}}
{{ dict|<Custom Filterで定義した関数名(例だとget_value)>:key1 }} 
  
  
  
  
コメント