2012-03-28 12 views
6

Esiste invece una funzione get() per questo?Posso accedere a valori chiave specifici nel dizionario dal modello django?

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

Da python ho la funzione get() per ottenere valori da una chiave specifica. Ma non sono riuscito a trovare un modo per farlo con i tag del modello django. Quindi mi chiedo è possibile? Ho bisogno di ottenere valori specifici dal momento che l'uso di loop aggiunge molte nuove linee nel codice sorgente HTML.

O si deve occuparsi dell'output nella vista prima di inviarlo al modello, quale metodo è migliore?

risposta

9

È possibile utilizzare {{ choices.items.key }} per accedere a un elemento dict specifico.

Non c'è motivo di preoccuparsi degli spazi bianchi nel codice HTML; il tipico utente finale non ha alcun reale interesse nel leggerlo e, se è curioso, usa sempre un visualizzatore DOM o lo esegue attraverso un beautifier HTML.

+0

sì, è vero. È solo che mi infastidisce un po 'vedere che sembra in disordine ^^; – starcorn

+1

non si può fare il primo ('choices.items ['key']') con il linguaggio template di django –

+1

Risposta aggiornata; mescolato con jinja dove funziona – ThiefMaster

4

Se si desidera un valore specifico, basta aggiungerlo alla punteggiata-path:

{{ choices.items.somekey }} 

ti porterà il valore di choices.items['somekey'] se choices.items è un dict.

1

Se il tipo di scelta è DICT come {}.

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

Se choose.items è di tipo DICT.

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

Prova Vedere un piccolo esempio.

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

Penso che siate molto avanti ora, solo per condividere il mio punto. si potrebbe fare in questo modo pure

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

o con la chiave, il valore come

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

È possibile specificare come {{ choices.key_name }} Ha funzionato per me. Semplicemente

0
{{ choices.values }} 

Questo ti dà una lista di tutti i valori nel dizionario in una volta.

Problemi correlati