Merujuk Pembolehubah Templat dalam Ungkapan Jinja
Dalam aplikasi web Flask, adalah perkara biasa untuk menjana URL secara dinamik menggunakan pembolehubah templat dalam ungkapan Jinja. Walau bagaimanapun, merujuk pembolehubah dalam ungkapan Jinja boleh mencabar, seperti yang ditunjukkan dalam senario berikut:
Pertimbangkan laluan yang ditakrifkan sebagai:
@app.route('/magic/<filename>') def moremagic(filename): pass
< p>Untuk menjana pautan ke laluan daripada templat, anda mungkin mahu menggunakan url_for() seperti this:
<h1>you uploaded {{ name }}</h1> <a href="{{ url_for('/magic/<filename>') }}">Click to see magic happen</a>
Walau bagaimanapun, jika anda perlu memasukkan nilai {{name}} secara dinamik ke dalam URL, pendekatan ini menghasilkan ralat sintaks Jinja2.
Penyelesaian kepada isu ini terletak pada memahami tingkah laku ungkapan Jinja. Di dalam {{ ... }}, semuanya dianggap sebagai ungkapan seperti Python. Oleh itu, anda tidak perlu menggunakan {{ ... }} bersarang untuk merujuk pembolehubah.
<h1>you uploaded {{ name }}</h1> <a href="{{ url_for('moremagic', filename=name) }}">Click to see magic happen</a>
Dalam kod yang diperbetulkan ini, kurungan tambahan di sekeliling ungkapan Jinja dialih keluar dan pembolehubah nama ialah diluluskan sebagai hujah kepada fungsi url_for().
Perhatikan bahawa url_for() memerlukan nama titik akhir, iaitu nama fungsi (moremagic) dalam ini kes. Laluan URL itu sendiri tidak diperlukan.
Atas ialah kandungan terperinci Bagaimana untuk Merujuk Pembolehubah Templat dengan Betul dalam Jinja `url_for` Ungkapan dalam Flask?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!