Question Modèles Django: valeur de la clé du dictionnaire avec un espace


Dans un modèle Django, existe-t-il un moyen d’obtenir une valeur à partir d’une clé qui contient un espace? Par exemple, si j'ai un dict comme:

{"Restaurant Name": Foo}

Comment puis-je référencer cette valeur dans mon modèle? La pseudo-syntaxe pourrait être:

{{ entry['Restaurant Name'] }} 

17
2018-06-03 22:27


origine


Réponses:


Il n'y a pas de moyen propre de le faire avec les balises intégrées. Essayer de faire quelque chose comme:

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

va lancer une erreur d'analyse.

Vous pouvez faire une boucle dans le dictionnaire (mais c'est moche / inefficace):

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

Une balise personnalisée serait probablement plus propre:

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

et l'utiliser dans le modèle comme ceci:

{% dictKeyLookup your_dict_passed_into_context "Restaurant Name" %}

Ou peut-être essayer de restructurer votre dict pour avoir des clés "plus faciles à utiliser".


20
2018-06-03 22:47



Vous pouvez également utiliser un filtre personnalisé.

from django import template
register = template.Library()

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

et dans le modèle

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

9
2017-10-20 15:18