¿Cómo agregar una nueva entrada en un objeto de diccionario al usar jinja2?

No puedo agregar una nueva entrada a un objeto de diccionario mientras uso la plantilla jinja2.

Por ejemplo, aquí estoy usando la plantilla jinja2 y he creado una variable de datos que es un diccionario. Y después de verificar algunas condiciones, QUIERO anexar el atributo de ubicación al objeto de datos, por ejemplo

{%- set data = { 'name' : node.Name, 'id' : node.id, } -%} {% if node.location !="" %} data.append({'location': node.location}) {% endif %} 

Sin embargo, no pude encontrar una manera de lograr esto y estoy obteniendo el UndefinedError:

 jinja2.exceptions.UndefinedError: 'dict object' has no attribute 'append' 

¿Alguien ha enfrentado este problema o podría proporcionar una referencia para resolverlo?

Busqué en la web pero no pude encontrar una solución, es decir, cómo lograr agregar una entrada al objeto dict en el Jinja.

Me he referido a continuación y otros recursos web:

  1. http://cewing.github.io/training.codefellows/assignments/day22/jinja2_walkthrough.html
  2. En Jinja2, ¿cuál es la forma más fácil de configurar todas las claves para que sean los valores de un diccionario?
  3. https://github.com/saltstack/salt/issues/27494

Sin la extensión jinja2.ext.do , puedes hacer esto:

 {% set x=my_dict.__setitem__("key", "value") %} 

Ignore la variable x y use el diccionario que ahora está actualizado.

UPD: Además, esto funciona para len() ( __len__() ), str() ( __str__() ), repr() ( __repr__() ) y muchas cosas similares.

Los diccionarios no tienen el método de añadir. Puede agregar un par clave-valor como este aunque:

 {% do data['location']=node.location %} 

o

 {% do data.update({'location': node.location}) %} 

Puntos clave:

  1. diccionario no soporta append() .
  2. Puede agregar el nuevo elemento al diccionario de datos usando la etiqueta {% do ... %} como se muestra aquí:

     {% do data.update({'location': node.location}) %} 
  3. Sin embargo, para que la etiqueta “do” funcione correctamente, debe agregar la extensión jinja2.ext.do a su entorno jinja.