MVT: Prinsip Arsitektur Django

Muhammad Rasyid
6 min readMay 3, 2021
Sumber: https://www.askpython.com/django/django-mvt-architecture

Build, don’t talk. — Ludwig Mies Van Der Rohe

Haloo teman-teman, setelah kita membahas mengenai scrum methodology yang sangat powerfull dalam project management, kali ini saya akan mencoba membahas topik yang cukup menarik. Bagaimana tidak menarik, pada kesempatan kali ini saya akan mencoba membahas mengenai prinsip arsitektur atau design pattern yang ada pada Django, yaitu MVT (Model, View, Template).

Secara sekilas, bagi kalian yang sudah cukup mendalami dunia programming dan mengetahui berbagai design pattern yang ada, MVT ini sangat mirip dengan MVC (Model, View, Controller) layaknya yang digunakan pada framework spring boot. Namun, walau begitu tetap terdapat alasan yang logis mengapa kedua hal tersebut tidak dapat disebut “mirip” seutuhnya.

Pada artikel kali ini, saya akan mencoba memberikan insight baru kepada teman-temana mengenai apa itu arsitektur MVT, prinsip kerja dan contoh langsung pada file kodingan django project agar dapat mudah dimengerti. Sebelum masuk ke dalam MVT, ada baiknya kita berkenalan dengan MVC sebagai dasar adanya MVT.

Sumber: https://www.guru99.com/mvc-tutorial.html

Oke Cit, jadi MVC itu apa?

Alright, jadi MVC (Model, View, Template) framework adalah sebuah desain arsitektur yang digunakan oleh program aplikasi dengan membagi ke dalam 3 bagian besar, yaitu Model, View, dan Controller.

Model : Berguna untuk mengatur segala sesuatu mengenai data yang ada pada database.

View : Sebagai bentuk representasi dari data yang ada sehingga dapat ditampilkan kepada pengguna

Controller : Berperan dalam meng-handle berbagai interaksi yang dijalankan oleh pengguna.

Mungkin terdengar sulit dan membingungkan apalagi bagi kalian yang belum pernah mendengar istilahnya sama sekali. Hhmmm, mari kita coba menggunakan analogi.

Bayangkan kalian lapar dan akhirnya memutuskan untuk pergi ke sebuah restoran. Disana kalian menunggu pelayan dengan terlebih dahulu melihat menu yang disediakan melalui buku menu. Beberapa saat kemudian, datanglah pelayan yang siap untuk mencatat pesananmu. Anggap saja kita memesan satu piring nasi goreng lengkap dengan sayurannya. Lalu pelayan tersebut berjalan kebelakang menghampiri koki untuk segera memasakkan pesananmu. Tak butuh waktu lama, nasi goreng yang kamu pesan sudah selesai dimasak dan telah dihidangkan didepan kamu.

Seperti dongeng ya? tapi mari coba kita perhatikan dengan seksama. Disini kamu berperan sebagai user yang ingin melakukan sebuah request terhadap sebuah aplikasi. Buku menu yang menampilkan hal-hal apa saja yang dapat dilakukan merupakan pengandaian dari view. Pelayan yang sigap mencatat pesanan kamu adalah sebuah controller yang akan berhubungan dengan model yang dalam hal tadi adalah koki yang akan memasakkan pesanananmu. Jadi kalau disimpulkan seperti ini:

Kamu: Client,Buku Menu: View, Pelayan: Controller, dan Koki: Model.

Trus Bedanya MVT sama MVC apa tu Cit?

Nah ini dia yang menarik. Di django framework, kita akan disuguhkan sesuatu yang berbeda sedikit. Karena disini tidak terdapat controller melainkan digantikan dengan templates.

Sumber: https://degananda.com/cara-install-web-service-framework-django-untuk-project-python-pada-windows/

Template ini yang akan menjadi representasi tampilan yang diperlihatkan kepada client kita. Data yang ditampilkan pada template (jika dinamis) maka akan dipanggil ke models melalui views. Dengan data tersebut dan template yang sudah ada (berbentuk HTML yang dikombinasikan dengan Django Template Language / DTL) maka client dapat melihat sesuai dengan apa yang ia minta.

Cit bingung, contoh praktek kodingan ada?

Wah, ada banget dong!

Namun, kali ini saya ga bisa memberikan contoh menggunakan proyek SekolahKu karena tidak terdapat template di dalamnya (hanya backend saja). Langsung aja kita lihat contohnya.

Install Django

Pertama-tama kita tetap harus membuat django project baru yang kemudian dilanjutkan dengan membuat app didalamnya.

Create Django Project
Create Django App

Setelah itu, kita coba jalankan server kita melalui localhost

Runserver Django

dan kita bukan browser lalu ketikkan halaman http://127.0.0.1:8000/ maka kalian seharusnya akan mendapati tampilan seperti ini:

Django Installed

Model

Selanjutnya kita akan coba untuk membuat model yang akan menyimpan data mahasiswa dengan satu buah atribut yaitu nama.

Project Structure
Mahasiswa Model

selanjutnya, kita dapat coba untuk membuat object mahasiswa dengan terlebih dahulu membuat superuser dan melakukan migrasi database.

Migrate Database
Create Admin
Membuat Objek Mahasiswa

Kamu dapat membuat objek mahasiswa dengan terlebih dahulu masuk ke dalam django admin dengan menambahkan /admin diakhir link localhost.

Model Mahasiswa

Dapat dilihat bahwa sudah terdapat objek mahasiswa yang nantinya akan kita gunakan pada view.

Template

Selanjutnya kita akan membuat template yang kemudia akan menjadi halaman layout untuk menampilkan nama dari objek mahasiswa yang kita miliki.

Hal pertama yang harus kita lakukan adalah membuat folder templates yang berisikan 1 buah file HTML pada app yang telah kita miliki (dalam hal ini mvt).

HTMl template

Setelah itu, kita dapat melakukan setting urls.py agar dapat mengarahkan urls yang kita inginkan untuk menggunakan file mahasiswa.html sebagai template nantinya.

URLs.py Project
URLs.py mvt app

Setelah itu kita dapat membuat views dengan nama sesuai dengan yang telah dicantumkan pada urls.py kita, yaitu list_mahasiswa.

View

Pada views.py yang terdapat pada app mvt, kita dapat mengatur logic fungsi yang akan menghandle satu atau lebih event disini. Pada contoh ini kita akan membuat fungsi dengan nama list_mahasiswa dengan tujuan untuk menampilkan seluruh data mahasiswa yang tersimpan pada database.

Views.py

Dapat dilihat, bahwa kita melakukan render dengan menggunakan template mahasiswa.html dengan argumen tambahan berupa ‘mahasiswas’ yang diambil dari seluruh object mahasiswa pada model Mahasiswa di database.

Mari kita coba jalankan kembali server dan lihat hasilnya.

Dapat terlihat bahwa nama mahasiswa yang telah kita buat sebelumnya muncul, lalu bagaimana kalau kita tambahkan nama mahasiswa lainnya? apakah tetap dapat ditampilkan menggunakan template yang sama?

Menambahkan Objek Mahasiswa

dan ketika kita buka kembali halaman tadi, akan terlihat bahwa data yang ditampikan sudah sesuai dengan database yang kita update tadi.

Data sudah terupdate.

Nah bagaimana teman-teman, sudah cukup terbuka kah wawasannya mengenai model arsitektur MVT yang ada pada framework Django? Kalau teman-teman masih bingung mungkin masih butuh eksplorasi lebih dalam dan adaptasi lagi dengan django ya :D

Jika terdapat kesalahan, kritik, dan saran bisa teman-teman sampaikan melalui linkedin saya atau komen di postingan ini.

Terima kasih :)

--

--