Je ne suis pas en mesure d'ajouter une nouvelle entrée dans un objet dictionnaire lors de l'utilisation du modèle jinja2.
Par exemple, ici j'utilise le modèle jinja2 et j'ai créé une variable de données qui est un dictionnaire. Et après avoir vérifié certaines conditions si je [~ # ~] veux [~ # ~] pour ajouter un attribut d'emplacement à l'objet de données, par exemple.
{%- set data = {
'name' : node.Name,
'id' : node.id,
}
-%}
{% if node.location !="" %}
data.append({'location': node.location})
{% endif %}
Cependant, je n'ai pas pu trouver un moyen d'y parvenir et je reçois l'erreur UndefinedError:
jinja2.exceptions.UndefinedError: 'dict object' has no attribute 'append'
Quelqu'un at-il rencontré ce problème ou pourrait fournir une référence pour résoudre ce problème?
J'ai cherché sur le Web mais je n'ai pas trouvé de solution, c'est-à-dire comment ajouter une entrée à l'objet dict dans le Jinja.
J'ai référé les ressources suivantes et d'autres ressources Web:
Sans l'extension jinja2.ext.do
, Vous pouvez le faire:
{% set x=my_dict.__setitem__("key", "value") %}
Ignorez la variable x
et utilisez le dictionnaire qui est maintenant mis à jour.
UPD: Cela fonctionne également pour len()
(__len__()
), str()
(__str__()
), repr()
(__repr__()
) et bien d'autres choses similaires.
Les dictionnaires n'ont pas la méthode append. Vous pouvez cependant ajouter une paire clé-valeur comme ceci:
{% do data['location']=node.location %}
ou
{% do data.update({'location': node.location}) %}
Points clés à retenir:
append()
.Vous pouvez ajouter le nouvel élément au dictionnaire de données en utilisant {% do ... %}
tag comme indiqué ici:
{% do data.update({'location': node.location}) %}
Cependant, pour que la balise "do" fonctionne correctement, vous devez ajouter le jinja2.ext.do
extension à votre environnement jinja.