Rumah >hujung hadapan web >tutorial js >Bagaimana Menggunakan Data JSON dengan Selamat daripada Templat Jinja Flask dalam JavaScript?

Bagaimana Menggunakan Data JSON dengan Selamat daripada Templat Jinja Flask dalam JavaScript?

Patricia Arquette
Patricia Arquetteasal
2024-12-13 06:10:11918semak imbas

How to Safely Use JSON Data from Flask's Jinja Templates in JavaScript?

Cara Menggunakan Data JSON yang Diberikan dalam Templat Jinja dengan JavaScript

Dalam Flask, apabila menghantar data dari laluan ke templat Jinja, automatik melarikan diri didayakan untuk mengelakkan kelemahan keselamatan. Walau bagaimanapun, ini boleh menyebabkan masalah apabila cuba menggunakan data sebagai JSON dalam JavaScript.

SyntaxError: Token Tidak Dijangka '&'

Apabila cuba menggunakan data yang diberikan dengan JSON.parse, ralat "SyntaxError: Token tidak dijangka '&'" berlaku kerana Jinja melarikan diri daripada aksara "&" dalam output.

Menggunakan Penapis tojson

Untuk menyelesaikan masalah ini, Flask menyediakan penapis tojson yang membuang data dengan selamat sebagai JSON dan menandakannya sebagai selamat untuk pemaparan:

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

Gelagat Kelalang Terdahulu dan selamat Penapis

Versi lama Flask tidak menandakan data yang dibuang sebagai selamat, jadi pendekatan berikut telah digunakan:

<script>var tree = {{ tree|tojson|safe }};</script>

Walau bagaimanapun, ini tidak lagi diperlukan.

Pendekatan Alternatif Tanpa JSON

Jika anda tidak menghantar data ke JavaScript tetapi menggunakannya dalam Jinja, anda boleh menghantar data Python asal tanpa memanggil tojson:

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

Pilihan Lain

  • Penapis selamat: Menandai data sebagai selamat untuk dipaparkan tanpa melarikan diri.
  • Pembungkus Markup: Membungkus rentetan dalam Markup untuk mencapai kesan yang sama seperti penapis selamat.

Atas ialah kandungan terperinci Bagaimana Menggunakan Data JSON dengan Selamat daripada Templat Jinja Flask 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