Template Django: valore della chiave del dizionario con uno spazio al suo interno

In un modello Django, c’è un modo per ottenere un valore da una chiave che contiene uno spazio? Ad esempio, se ho un titolo del tipo:

{"Restaurant Name": Foo} 

Come posso fare riferimento a quel valore nel mio modello? La pseudo-syntax potrebbe essere:

 {{ entry['Restaurant Name'] }} 

Non esiste un modo pulito per farlo con i tag integrati. Cercando di fare qualcosa come:

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

genererà un errore di analisi.

Si può fare un ciclo for attraverso il dizionario (ma è brutto / inefficiente):

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

Un tag personalizzato sarebbe probabilmente più pulito:

 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, '') 

e usarlo nel modello in questo modo:

 {% dictKeyLookup your_dict_passed_into_context "Restaurant Name" %} 

O magari provare a ristrutturare il tuo dettato per avere chiavi più facili da usare.

Puoi anche usare un filtro personalizzato.

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

e all’interno del modello

 {{ entry|get:"Restaurant Name" }}