68 Tsüklid HTML-is
Jinja2 võimaldab kasutada tsükleid ka html-failis. Näiteks võime lisada arvud 0-st 10-ni järgnevalt:
{% for i in range(11) %}
{{ i }}
{% endfor %}
Lisame selle tsükli meie näitefaili avaleht.html. Faili sisu on nüüd järgnev:
{% extends 'baas.html' %}
{% block content %}
<h1>1. teema</h1>
{% for i in range(11) %}
{{ i }}
{% endfor %}
{% endblock %}
Kui jätame kõik muu samaks, aga asendame keskkonnas PythonAnywhere faili avaleht.html ning pärast seda valime menüüst Web → Reload kasutaja.pythonanywhere.com (sõna kasutaja asemel on igaühel oma kasutajanimi). Kui nüüd veebilehte värskendame, on tulemus järgnev:

Kui me aga lisaksime selle tsükli faili baas.html body-ossa, siis kuvataks arve 1-st 10-ni kõikidel lehtedel, kus kuvatakse html-faili sisu, mis viitab failile baas.html.
Nüüd aga vaatame, kuidas postitusi kuvada ja jätame juba loodud kujunduse praegu kõrvale. Nüüd kasutame kokku 3 faili. Olgu faili baas.html sisu nüüd järgnev:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
{% block head %} <title>Minu esimene veebileht</title> {% endblock %}
</head>
<body>
{% block body %} {% endblock %}
</body>
</html>
Postituste kuvamiseks muudame app.py sisu ja seejärel loome faili postitused.html. Olgu meil postitused app.py failis sõnastike järjendina.
from flask import Flask, render_template
app = Flask(__name__)
koik_postitused = [{'pealkiri': 'Postitus 1', 'sisu':'1. postituse sisu', 'autor': 'Heidi'}, {'pealkiri': 'Postitus 2', 'sisu':'2. postituse sisu', 'autor': 'Elle'}]
@app.route('/postitused')
def blogi():
return render_template("postitused.html", postitused=koik_postitused)
if __name__ == "__main__":
app.run()
Nüüd aga soovime neid postitusi kuvada. Selleks saame kasutada tsüklit html-failis. Loome faili postitused.html, mille sisu on järgnev:
{% extends 'baas.html' %}
{% block body %}
<h1>Postitused</h1>
{% for postitus in postitused %}
<h2>{{ postitus.pealkiri }}</h2>
<h3>Autor: {{ postitus.autor }}</h3>
<p>{{ postitus.sisu }}</p>
{% endfor %}
{% endblock %}
Kui meil app.py failis oli sõnastike list muutujas koik_postitused ja renderdamisel lisasime postitused=koik_postitused, siis tsüklis on meil vaja kasutada sama muutujat – meie näite puhul postitused. Meie näite puhul on sõnastiku võtmed pealkiri, autor ja sisu, mida kasutame ka for-tsüklis. Selle näite tulemus näeb välja järgnev:
