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:

Tsüklid HTML-is

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:

Tsüklid HTML-is näide

 

Litsents

Icon for the Creative Commons Attribution 4.0 International License

Tarkvaraarendus. 2. trükk on loodud Eno Tõnisson, Tauno Palts, Kaarel Tõnisson, Heidi Meier, Merilin Säde, Ago Luberg, Birgy Lorenz, Einar Kivisalu, Meelis Antoi, ja Säde Mai Krusberg poolt Creative Commons Attribution 4.0 International License litsentsi alusel, kui pole teisiti märgitud.

Jaga seda raamatut