[Django]-Django templates: value of dictionary key with a space in it

32đź‘Ť

âś…

There is no clean way to do this with the built-in tags. Trying to do something like:

{{ a.'Restaurant Name'}} or {{ a.Restaurant Name }}

will throw a parse error.

You could do a for loop through the dictionary (but it’s ugly/inefficient):

{% for k, v in your_dict_passed_into_context %}
   {% ifequal k "Restaurant Name" %}
       {{ v }}
   {% endifequal %}
{% endfor %}

A custom tag would probably be cleaner:

from django import template
register = template.Library()

@register.simple_tag
def dictKeyLookup(the_dict, key):
   # Try to fetch from the dict, and if it's not found return an empty string.
   return the_dict.get(key, '')

and use it in the template like so:

{% dictKeyLookup your_dict_passed_into_context "Restaurant Name" %}

Or maybe try to restructure your dict to have “easier to work with” keys.

👤Sam Dolan

16đź‘Ť

You can use a custom filter as well.

from django import template
register = template.Library()
    
@register.filter
def get(mapping, key):
    return mapping.get(key, '')

and within the template

{{ entry|get:"Restaurant Name" }} 
👤Tugrul Ates

Leave a comment