Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menggunakan Data JSON yang Diberikan dengan Selamat daripada Templat Jinja dalam JavaScript?

Bagaimana untuk Menggunakan Data JSON yang Diberikan dengan Selamat daripada Templat Jinja dalam JavaScript?

DDD
DDDasal
2025-01-05 16:46:39514semak imbas

How to Safely Use JSON Data Rendered from a Jinja Template in JavaScript?

JavaScript Meningkatkan SyntaxError dengan Data Diberikan dalam Templat Jinja

Isu:

Percubaan untuk menggunakan data JSON yang diberikan dalam Jinja templat dalam JavaScript gagal dengan "SyntaxError: Unexpected tanda '&'." kesilapan. Bagaimanakah data JSON yang diberikan ini boleh digunakan dengan berkesan dalam JavaScript?

Penyelesaian:

Persekitaran Jinja Flask sememangnya terlepas dari data yang diberikan dalam templat HTML untuk tujuan keselamatan. Apabila menghantar objek Python untuk ditafsirkan sebagai JSON, penapis tojson harus digunakan untuk menukar dan menandakan data dengan sewajarnya sebagai selamat:

return render_template('tree.html', tree=tree)
var tree = {{ tree|tojson }};

Jika JSON tidak diberikan atau telah ditukar sebelum ini kepada rentetan, penapis selamat atau pembalut Markup boleh digunakan untuk memastikan selamat rendering:

# already dumped to json
return render_template('tree.html', tree=json.dumps(tree))
var tree = {{ tree|safe }};
# already dumped and marked safe
return render_template('tree.html', tree=Markup(json.dumps(tree)))
var tree = {{ tree }};

Sebagai alternatif, jika data digunakan dalam Jinja semata-mata dan tidak dihantar ke JavaScript, JSON tidak diperlukan. Data Python asal boleh dihantar dan digunakan terus dalam templat:

return render_template('tree.html', tree=tree)
{% for item in tree %}
    <li>{{ item }}</li>
{% endfor %}

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Data JSON yang Diberikan dengan Selamat daripada Templat Jinja dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Contoh Python While LoopArtikel seterusnya:Contoh Python While Loop