Get dict's associated value filter

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
@register.filter
def get( dict, key, default = '' ):
  """
  Usage: 

  view: 
  some_dict = {'keyA':'valueA','keyB':{'subKeyA':'subValueA','subKeyB':'subKeyB'},'keyC':'valueC'}
  keys = ['keyA','keyC']
  template: 
  {{ some_dict|get:"keyA" }}
  {{ some_dict|get:"keyB"|get:"subKeyA" }}
  {% for key in keys %}{{ some_dict|get:key }}{% endfor %}
  """

  try:
    return dict.get(key,default)
  except:
    return default

More like this

  1. Truncate filter by zalun 4 years ago
  2. Get boolean value from request send by Ajax by zalun 3 years, 10 months ago
  3. Verbose template filter : avoid too many if by Romain Hardouin 4 years, 11 months ago
  4. Template range filter by zalun 4 years, 2 months ago
  5. Quickly check templates while sketching them out by Amr Mostafa 6 years ago

Comments

jerry2801 (on October 20, 2009):

{{ some_dict.keyA }} isn simpler than {{ some_dict|get:"keyA" }}

??

#

elif (on November 6, 2009):

Yes it's simpler. But it doesn't wrok when keyA is a variable.

#

(Forgotten your password?)