Se si utilizza Django o Jinja2, probabilmente ci si è già imbattuti in questo problema. Ho uno stringa JSON che assomiglia a questo:Conversione di oggetto dict in stringa in modello Django/Jinja2
{
"data":{
"name":"parent",
"children":[
{
"name":"child_a",
"fav_colors":[
"blue",
"red"
]
},
{
"name":"child_b",
"fav_colors":[
"yellow",
"pink"
]
}
]
}
}
Ora voglio passare questo al mio modello Jinja2:
j = json.loads('<the above json here>')
self.render_response('my_template.html', j)
... e iterare in questo modo:
<select>
{% for p in data recursive %}
<option disabled>{{ p.name }}</option>
{% for c in p.children %}
<option value="{{ c.fav_colors|safe }}">{{ c.name }}</option>
{% endfor %}
{% endfor %}
</select>
Questo è dove sto avendo il problema: tutto funziona eccetto che Jinja2 emette valori codificati in Unicode per c.fav_colors. Ho bisogno di c.fav_colors come un array javascript valido in modo che possa accedervi da javascript. Come posso convincere Jinja a stampare quel valore come testo ASCII come: ['blue','red']
anziché [u'blue', u'red']
?
No tag di chiusura? Inoltre, perché non [{% per articolo in c%} "articolo" {% se non forloop.last%}, {% endif%} {% endfor%}]? Questo è ciò che i modelli sono per tutti: convertire i valori Python in qualunque cosa abbia bisogno della vista. – jpic
Aggiornamento del tag di opzione. La sintassi del loop che sto usando qui è per chiarezza. Sto solo provando a mostrare il problema: come esportare c.fav_colors come array compatibile javascript valido: '['blue', 'red']' – ofko