Nếu bạn sử dụng Django hoặc Jinja2, có thể bạn đã gặp sự cố này trước đây. Tôi có một chuỗi JSON trông như thế này:Chuyển đổi đối tượng dict thành chuỗi trong mẫu Django/Jinja2
{
"data":{
"name":"parent",
"children":[
{
"name":"child_a",
"fav_colors":[
"blue",
"red"
]
},
{
"name":"child_b",
"fav_colors":[
"yellow",
"pink"
]
}
]
}
}
Bây giờ tôi muốn chuyển thông tin này đến mẫu Jinja2 tôi:
j = json.loads('<the above json here>')
self.render_response('my_template.html', j)
... và lặp nó như thế này:
<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>
Đây là nơi tôi đang gặp sự cố: mọi thứ hoạt động ngoại trừ Jinja2 xuất ra các giá trị mã hóa unicode cho c.fav_colors. Tôi cần c.fav_colors như một mảng javascript hợp lệ để tôi có thể truy cập nó từ javascript. Làm thế nào tôi có thể nhận được Jinja để in giá trị đó như văn bản ascii như: ['blue','red']
thay vì [u'blue', u'red']
?
Không thẻ đóng? Ngoài ra, tại sao không [{% cho mục trong c%} "mục" {% nếu không phải forloop.last%}, {% endif%} {% endfor%}]? Đây là những gì mẫu cho sau khi tất cả: chuyển đổi giá trị python vào bất cứ điều gì cần xem. – jpic
Đã cập nhật thẻ tùy chọn đó. Cú pháp vòng lặp mà tôi đang sử dụng ở đây là để rõ ràng. Tôi chỉ cố gắng để giới thiệu vấn đề: làm thế nào để xuất ra c.fav_colors dưới dạng mảng tương thích javascript hợp lệ: '['blue', 'red']' – ofko