Template Engine
Pada bagian ini, kamu akan diberikan panduan bagaimana menggunakan template di Flask. Template sendiri berguna agar kita dapat merancang tampilan yang dapat digunakan berulang-kali (reusable). Flask sendiri memiliki sendiri template engine yang disebut dengan nama Jinja2. Untuk mengetahui cara penggunaanya, silahkan lihat pada modul selanjutnya.
Jinja Template Engine
Jinja2 adalah bahasa templating modern dan ramah desainer untuk Python, meniru model template Django atau Flask. Cepat, banyak digunakan, dan aman dengan lingkungan eksekusi template. Jinja2 digunakan di bagian Front end.
Contoh: Yang semula code HTML-nya seperti ini:
<h1>Hello, David</h1>Setelah menggunakan Jinja2:
<h1>Hello, {{ name }} </h1>Value dari {{ name }} akan dikirim melalui Route yang sudah kita pelajari sebelumnya.
Rendering Template
Di bagian atas kamu mempunyai sebuah variable {{ name }} yang belum berisikan value. Disini di bagian Rendering Templates kamu akan akan memberikan value kepada {{ name }} dengan menuliskannya di bagian route:
# app.py
from flask import Flask, render_template #tambahkan ini
#.........
# tambahkan kode dibawah ini
@app.route('/user/<name>')
def user(name):
return render_template('user.html', name=name)Dan jangan lupa untuk membuat folder templates yang berisikan user.html karna fungsi render_template untuk membaca folder templates yang isinya user.html sehingga folder kamu terlihat seperti ini:
Dan buatlah kode seperti ini di dalam file user.html:
dan cobalah untuk mengakses https://127.0.0.1:5000/user/David di web browser kamu, maka hasilnya akan sama seperti sebelumnya, namun kamu berhasil menggunakan template pada pandua kali ini.
Variabel
{{ name }} adalah sebuah variabel. Namun, kamu juga harus tau bahwa di jinja2 ada fungsi untuk memfilter sebuah karakter namanya variabel filters contoh kecilnya seperti ini:
hasilnya akan membuat huruf awal dari variabel menjadi kapital. Berikut ini adalah daftar beberapa variabel filter jinja:
Nama Filter
Deskripsi
safe
Merender semua tags html
capitalize
Memberikan kapital pada huruf awal kalimat
lower
Membuat kalimat menjadi huruf kecil semua
upper
Membuat kalimat menjadi huruf besar semua
title
Membuat awal kata menjadi kapital
striptags
Menghilangkan tags html sebelum di rendering
Control Structure
Sekarang kamu akan membuat file base.html di folder templates dengan isi seperti kode dibawah ini:
sehingga struktur direktori kamu menjadi seperti ini:
Di jinja2 juga kita bisa melakukan beberapa kontrol struktur seperti contoh kecilnya:
Kemudian ubahlah di code kamu di bagian user.html menjadi seperti di bawah:
Jadi artinya extends ini adalah sebagai dasar template atau sebagai struktur dasar template yang diambil dari base.html. Jadi setiap block yang di user.html akan diposisikan sesuai block yang kamu tuliskan di base.html. Program kamu jadi lebih terstrukturkan!
Lalu coba jalankan kembali flask run dan pastikan program berjalan normal
Integrasi Bootstrap dengan Flask
Integrasi Bootstrap menggunakan CDN
Bootstrap membantu menciptakan antarmuka web menjadi lebih atraktif dan lebih bersih dan compatible dengan semua web browser baik desktop ataupun mobile, dan ini open-source. Di sesi ini kamu akan integrasikan bootstrap dengan web kamu dengan menggunakan CDN. Langkahnya seperti ini:
Copy dan Paste CDN CSS di bawah tag head pada
base.htmlsehingga menjadi seperti ini
Copy dan Paste juga CDN JS di atas
</body>padabase.htmlsehingga kode lengkapnya seperti ini
Selanjutnya coba jalankan kembali flask run dan pastikan style pada tampilannya berubah
Menambahkan Navbar
Selanjutnya buatlah file baru pada folder templates dengan nama navbar.html sehingga struktur direktory kamu menjadi seperti ini:
Lalu tambahkan kode berikut ini pada navbar.html:
navbar.html ini nanti berfungsi sebagai navbar kamu yang bisa kamu panggil secara terus menerus. Caranya tuliskan {% include 'navbar.html' %} dibawah tag body pada base.html sehingga seperti ini:
Kemudian kamu ubah:
yang ada di bawah {% block content %} pada user.html menjadi:
Sekarang kamu restart web browser kamu dan lihat perubahannya.
Kustom Halaman Error
Kustom Halaman Error adalah ketika kamu dalam mode debug=False/(Production) dan terjadi error pada halaman website baik 404 (Not Found), 403 (Forbidden) ataupun 500 (Internal Server Error). Agar terlihat lebih user friendly, kita dapat melakukan kustom pada halaman tersebut.
errorhandler mengembalikan respon status kode 403, 404, dan 500. Jadi ketika terjadi error 404 maka akan mengakses halaman 404.html dan seterusnya. Selanjutnya, kita akan membuat file template error 403.html, 404.html, 500.html pada folder templates, sehingga struktur dari direktori nya akan terlihat seperti ini:
Status Kode 403
Status Kode 404
Status Kode 500
Error pages ini akan terbaca ketika kamu merubah debug=False nanti ketika mengakses halaman yang salah, akan muncul custome page 404.html dan seterusnya.