Jinja: Bisakah kita mendapatkan tag {% kosong %}?

Dibuat pada 2 Des 2011  ·  5Komentar  ·  Sumber: pallets/jinja

Django memiliki tag yang sangat keren yang disebut {% kosong %}, yang memungkinkan Anda melakukan ini:

{% for item in list %}
    <tr><td>{{ item }}</td></tr>
{% empty %}
    <tr><td>Nothing to show!</td></tr>
{% endfor %}

yang merupakan kependekan dari

{% if list %}
    {% for item in list %}
        <tr><td>{{ item }}</td?</tr>
    {% endfor %}
{% else %}
    <tr><td>Nothing to show!</td></tr>
{% endif %}

Sejak beralih ke jinja, saya sangat merindukan tag ini :(

Komentar yang paling membantu

Itu sudah ada. Gunakan {% else %} pada for loop. Sayangnya kami memiliki yang lain sebelum Django dibuat kosong dan mengganti namanya sekarang untuk mencocokkan semantik Django agak aneh.

Semua 5 komentar

Itu sudah ada. Gunakan {% else %} pada for loop. Sayangnya kami memiliki yang lain sebelum Django dibuat kosong dan mengganti namanya sekarang untuk mencocokkan semantik Django agak aneh.

Oh begitu. Mungkin berikan catatan itu di "Beralih dari Mesin Templat lain" di bawah bagian Django?

Saya tidak melihat ini di dokumentasi switching . Disebutkan dalam struktur kontrol : untuk dokumentasi tetapi akan sangat membantu jika ada di dokumen switching...

Jika list dalam kode adalah generator dan blok for dan if bekerja dengan cara yang sama seperti di Python maka konstruk if-for tidak menyelesaikan masalah karena generator selalu benar, ditambah konstruksi seperti itu kurang idiomatis daripada blok empty .

Saya tidak tahu apakah Anda dapat menambahkan flag untuk memeriksa apakah loop telah berjalan, memeriksa NameError: name 'item' is not defined atau menambahkan variabel pembantu ke list(generator) di level Jinja. Jika tidak, maka satu-satunya solusi adalah menambahkan blok empty atau meyakinkan pengembang Python bahwa generator kosong seharusnya palsu (untuk menghindari pemeriksaan yang buruk dengan menangani item yang muncul StopIteration dan "mendorong kembali").

Blok else di Jinja sudah bekerja seperti blok empty di Django. Tidak ada perubahan yang diperlukan di sini.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat