2012-03-28 6 views
6

¿Hay alguna función get() para esto?¿Puedo acceder a valores clave específicos en el diccionario de la plantilla django?

{% for key, value in choices.items %} 
    <li>{{key}} - {{value}}</li> 
{% endfor %} 

Desde python tengo la función get() para obtener valores de una clave específica. Pero no pude encontrar una forma correspondiente de hacerlo con las etiquetas de plantilla django. Entonces me pregunto si es posible? Necesito obtener valores específicos ya que el uso de bucles agrega muchas líneas nuevas en la fuente html.

O debería ocuparse de la salida dentro de la vista antes de enviarla a la plantilla, ¿qué método es mejor?

Respuesta

9

Puede usar {{ choices.items.key }} para acceder a un elemento dict específico.

Sin embargo, no hay ninguna razón para preocuparse por los espacios en blanco en el código HTML; el usuario final típico no tiene un negocio real al leerlo y, si tiene curiosidad, siempre utiliza un visor DOM o lo ejecuta a través de un embellecedor HTML.

+0

sí, eso es cierto. Es solo que me molesta un poco ver que se ve desordenado ^^; – starcorn

+1

no se puede hacer lo anterior ('choices.items ['key']') con el lenguaje de plantillas de django –

+1

Answer updated; lo mezclé con jinja donde funciona – ThiefMaster

4

Si desea un valor específico, simplemente añadirlo a la ruta con puntos:

{{ choices.items.somekey }} 

le dará el valor de choices.items['somekey'] si choices.items es una dict.

1

Si el tipo de opciones es DICT como {}.

{{choices.somekey|default:""}} 

Si choices.items es de tipo DICT.

{{choices.items.somekey|default:""}} 

Prueba See little example.

# In Views.py 
def dict_test(request): 
    my_little_dict = {"hi": "Hello"} 
    .... 
# in Template 
{{my_little_dict.hi}} 
3

Creo que ahora se adelanta mucho, solo para compartir mi punto. que podría hacer de esta manera también

{% for value in dict %} 
    {{value}}                 
{% endfor %} 

o con llave, como valor

{% for key,value in dict.items %} 
    {{key}} : {{ value }} 
{% endfor %} 
0

Puede especificar como {{ choices.key_name }} Se trabajó para mí. Simplemente simple

0
{{ choices.values }} 

Esto le da una lista de todos los valores en el diccionario a la vez.

Cuestiones relacionadas