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:
Setelah menggunakan Jinja2:
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:
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:
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.html
sehingga menjadi seperti ini
Copy dan Paste juga CDN JS di atas
</body>
padabase.html
sehingga 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.