Belajar Flask: Looping dengan template Jinja2

Flask menggunakan jinja2 untuk template engine view nya. Seperti blade, pada jinja2 pun ada handle untuk mengatur ketika terjadi looping berjalan pada view kita. Berikut adalah beberapa catatan mengenai looping dengan template jinja2.

Meneruskan Flaskr pada tutorial yang awal. Saya mencoba ngoprek untuk menambahkan penomoran dan perubahan layout list menjadi table. Berikut adalah perubahannya pada file show_entries.html

{% extends "layout.html" %}

{% block body %}
    {% if session.logged_in %}
        <form action="{{ url_for('add_entry') }}" method=post class=add-entry>
            <dl>
                <dt>Title:
                <dd><input type=text size=30 name=title>

                <dt>Text:
                <dd><textarea name=text rows=5 cols=40></textarea>

                <dd><input type=submit value=Share>
            </dl>
        </form>
    {% endif %}
    
    <table border=1>
        <tr>
            <td>No</td>
            <td>Title</td>
            <td>Text</td>
            <td>Action</td>
        </tr>
        {% for entry in entries %}
            <tr>
                <td>{{ loop.index }}</td>
                <td>{{ entry.title }}</td>
                <td>{{ entry.text|safe }}</td>
                <td>
                    <a href="{{ url_for('edit_entry', title=entry.title) }}">edit</a> | <a href="{{ url_for('delete_entry', title=entry.title) }}">delete</a>
                </td>
            </tr>
        {% else %}
            <tr>
                <td><em>Unbelievable.  No entries here so far</em></td>
            </tr>
        {% endfor %}
    </table>

{% endblock %}

Lalu terlihat pada penomoran, saya menuliskan loop.index yang artinya adalah penomoran dari template engine jinja2.

Selain loop.index itu ada lagi fungsi lain untuk handle ketika terjadi looping. Berikut catatan yang saya dapat dari stackoverflow.

This is all you can do with loop auxiliary variable:

  • loop.index The current iteration of the loop. (1 indexed)
  • loop.index0 The current iteration of the loop. (0 indexed)
  • loop.revindex The number of iterations from the end of the loop (1 indexed)
  • loop.revindex0 The number of iterations from the end of the loop (0 indexed)
  • loop.first True if first iteration.
  • loop.last True if last iteration.
  • loop.length The number of items in the sequence.
  • loop.cycle A helper function to cycle between a list of sequences. See the explanation below.
  • loop.depth Indicates how deep in deep in a recursive loop the rendering currently is. Starts at level 1
  • loop.depth0 Indicates how deep in deep in a recursive loop the rendering currently is. Starts at level 0

Yup, ada banyak ternyata. Contoh kasus lain mungkin bisa lihat di link ini: http://code.runnable.com/UpY_2DUSfzZeAAAb/using-loops-in-templates-for-python-flask-and-jinja2

Baik, sampai disini mari kita lanjut kembali untuk ngoprek belajar flask looping dengan template jinja2

Referensi:

http://stackoverflow.com/questions/17739264/count-number-of-rows-in-flask-templates

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: