Jeśli używasz Django lub Jinja2, prawdopodobnie napotkałeś już ten problem. Mam ciąg JSON, który wygląda tak:Konwersja obiektu dict na ciąg w szablonie Django/Jinja2
{
"data":{
"name":"parent",
"children":[
{
"name":"child_a",
"fav_colors":[
"blue",
"red"
]
},
{
"name":"child_b",
"fav_colors":[
"yellow",
"pink"
]
}
]
}
}
teraz chcę przekazać to do mojego szablonu Jinja2:
j = json.loads('<the above json here>')
self.render_response('my_template.html', j)
... i iteracyjne to tak:
<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>
To tutaj mam problem: wszystko działa, oprócz Jinja2 generuje zakodowane wartości Unicode dla c.fav_colors. Potrzebuję c.fav_colors jako poprawnej tablicy javascript, aby móc uzyskać do niej dostęp z javascript. Jak mogę sprawić, by Jinja wydrukowała tę wartość jako tekst ASCII: ['blue','red']
zamiast [u'blue', u'red']
?
nr tag zamykający? Ponadto, dlaczego nie [{% dla pozycji w c%} "pozycji" {%, jeśli nie forloop.last%}, {% endif%} {% endfor%}]? To właśnie są szablony: konwertowanie wartości Pythona na wszystko, czego potrzebuje widok. – jpic
Zaktualizowano tę opcję. Składnia pętli, której tu używam, jest jasna. Po prostu próbuję pokazać problem: jak wypisać c.fav_colors jako prawidłową tablicę zgodną z javascript: '['blue', 'red']' – ofko