Python → Python za web → HTML template u Flask-u


HTML template u Flask-u (Jinja2)


Lekcija 7 od 14

U prethodnoj lekciji naučili smo kako Flask koristi rute (URL putanje) za povezivanje web adresa sa Python funkcijama.

Sada ćemo naučiti kako Flask prikazuje prave HTML web stranice.

U većim web aplikacijama HTML kod se ne piše direktno u Python funkcijama već u posebnim fajlovima koji se zovu template.

Problem sa vraćanjem HTML koda

Moguće je vratiti HTML direktno iz Python funkcije:


@app.route("/")
def home():
    return "<h1>Dobrodošli</h1>"

Ali kod većih aplikacija ovo brzo postaje teško za održavanje.

Zato Flask koristi poseban sistem za rad sa HTML stranicama.

Šta je HTML template?

Template je HTML fajl koji Flask koristi za prikaz web stranice.

Flask koristi template sistem koji se zove Jinja2.

  • HTML se piše u posebnom fajlu
  • Python šalje podatke template-u
  • template generiše finalnu web stranicu

Struktura Flask projekta

Tipična Flask aplikacija izgleda ovako:


projekat/

app.py

templates/
    index.html
Svi HTML template fajlovi nalaze se u folderu templates.

Primer Flask aplikacije sa template-om

Prvo napravimo HTML fajl.

templates/index.html


<html>

<head>
<title>Moj Flask sajt</title>
</head>

<body>

<h1>Dobrodošli na moj Python sajt</h1>

</body>

</html>

Zatim u Python kodu učitavamo template.


from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def home():
    return render_template("index.html")

app.run()
Rezultat u browseru
Dobrodošli na moj Python sajt

Kako radi render_template?

  • Flask pronalazi HTML fajl u folderu templates
  • učitava HTML sadržaj
  • šalje ga browseru kao web stranicu
Ovo je standardni način prikazivanja web stranica u Flask aplikacijama.

Mini projekat – Jednostavan web sajt

Napravimo malu aplikaciju sa dve stranice.


from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def home():
    return render_template("index.html")

@app.route("/kontakt")
def kontakt():
    return render_template("kontakt.html")

app.run()

Kako radi ovaj projekat?

  • svaka ruta učitava svoj HTML template
  • browser prikazuje različitu stranicu
  • aplikacija funkcioniše kao mali web sajt

Povezane lekcije


Često postavljana pitanja

Šta je template u Flask-u?

Template je HTML fajl koji Flask koristi za prikaz web stranice.

Šta je Jinja2?

Jinja2 je template engine koji Flask koristi za generisanje HTML stranica.

Gde se nalaze template fajlovi?

Nalaze se u folderu templates.

Zašto koristiti template sistem?

Omogućava lakše održavanje i organizaciju web aplikacije.