Tugas 2 PBP 2024 2025 - almerazka/azkavogue GitHub Wiki
Tugas 2 PBP 2024/2025
🔰 Langkah Pengimplementasian
- Saya memulainya dengan membuat proyek dan aplikasi di Django, menambahkan model Product, mengatur routing dan views, lalu menambahkan data ke dalam template HTML. Setelah pengembangan selesai di lokal, saya melakukan deployment ke PWS. Penjelasan lebih jelas dapat dilihat pada bagian dibawah init
-
Membuat Proyek Django Baru
- Setelah membuat sebuah folder untuk proyek Django baru di lokal saya, saya menjalankan virtual environment dan menginstall beberapa requirements, kemudian saya menjalankan perintah
django-admin startproject azkavogue
. Nantinya Django akan secara otomatis menyediakan sebuah struktur dasar yang berisi manage.py, folder myproject/, dan berkas konfigurasi utama seperti settings.py, urls.py, dll
- Setelah membuat sebuah folder untuk proyek Django baru di lokal saya, saya menjalankan virtual environment dan menginstall beberapa requirements, kemudian saya menjalankan perintah
-
Membuat Aplikasi dengan nama
main
- Dengan perintah
python manage.py startapp main
, saya membuat aplikasi baru di dalam proyek django saya dengan namamain
. Folder ini akan berisi berkas utama seperti models.py, views.py, urls.py, dll. Nama aplikasi di Django tidak harus main melainkan disesuaikan dengan kebutuhan proyek.
- Dengan perintah
-
Melakukan Routing pada Proyek untuk Menjalankan Aplikasi main
- Agar URL dapat diakses dan terhubung dengan views yang sesuai, kita perlu melakukan routing. Jadi setiap kali pengguna mengunjungi URL tertentu di browser, Django perlu mengetahui bagaimana menangani permintaan tersebut dan apa yang harus ditampilkan.
- Buka berkas
myproject/settings.py
dan tambahkan aplikasi main ke dalam INSTALLED_APPS. (untuk memberi tahu Django bahwa aplikasi main telah dibuat dan akan digunakan dalam proyek) - Buat file
main/urls.py
dan tambahkan routing dasar untuk aplikasimain
. (Routing ini akan menghubungkan URL tertentu dengan fungsi-fungsi view di dalam aplikasi) - Di
myproject/urls.py
, tambahkan routing untuk aplikasi main (menghubungkannya dengan routing utama proyek, arahkan semua URL yang dimulai denganmain/
ke routing aplikasimain
)
- Buka berkas
- Agar URL dapat diakses dan terhubung dengan views yang sesuai, kita perlu melakukan routing. Jadi setiap kali pengguna mengunjungi URL tertentu di browser, Django perlu mengetahui bagaimana menangani permintaan tersebut dan apa yang harus ditampilkan.
-
Membuat Model Product dengan Atribut
name, price, dan description
- Model Product dibuat di dalam
main/models.py
untuk mendefinisikan struktur data yang akan disimpan di database. Perintahmakemigrations
danmigrate
diperlukan dalam Django untuk mengaplikasikan perubahan tersebut ke dalam database.makemigrations
(mendeteksi perubahan, misalkan saya menambahkan quantity, ketikamakemigrations
dijalankan Django akan membuat file migrasi yang mencatat bahwa tabel produk di database harus menambahkan kolom quantity)migrate
(menjalankan file migrasi yang dihasilkan oleh makemigrations ke dalam database sebenarnya)
- Model Product dibuat di dalam
-
Membuat Fungsi pada views.py untuk Menampilkan Nama Aplikasi serta Nama dan Kelas Kamu
- Di
main/views.py
, saya membuat fungsishow_main
yang bertanggung jawab untuk mengumpulkan data yang akan dikirimkan ke template HTML dan kemudian menampilkan template tersebut kepada pengguna, sesuai ketentuan disini saya menampilkan nama aplikasi, nama dan kelas saya.
- Di
-
Membuat Routing pada urls.py Aplikasi main untuk Mepetakan Fungsi di views.py
- Di urls.py pada aplikasi
main
, tambahkan rute baru yang akan memetakan URL ke fungsi di views.py. Jadi ketika pengguna mengakses /main/, fungsi show_main akan dieksekusi, dan template main.html dengan konteks yang diberikan akan dikirim sebagai respon.
- Di urls.py pada aplikasi
-
Melakukan Deployment ke PWS
- Setelah aplikasi selesai dan berfungsi dengan baik di lingkungan lokal,
deploy
ke platform Pacil Web Service (PWS). Hal ini ditujukan agar aplikasi dapat diakses melalui Internet.
- Setelah aplikasi selesai dan berfungsi dengan baik di lingkungan lokal,
-
Membuat README.md dan Jawaban Pertanyaan
- File
README.md
ini mencakup deskripsi proyek, langkah-langkah implementasi, serta tautan menuju aplikasi yang sudah di-deploy di PWS. Sertakan juga jawaban untuk pertanyaan yang relevan tentang Django dan fungsionalitasnya.
- File
💡 Alur Django
Pertama-tama, Client mengirimkan request ke Browser/Internet, kemudian request tersebut akan diproses oleh urls.py
, dimana URL Client akan dicocokkan dengan URL Routing untuk menentukan views.py
yang sesuai. Di dalam views.py
tersebut, logika dijalankan dan jika data dari database diperlukan, fungsi view akan memanggil model di models.py
. Setelah data berhasil terkumpul, views.py
akan menyiapkan template HTML dengan data tersebut, lalu merendernya. Hasilnya main.html
akan dikirimkan ke pengguna untuk ditampilkan. Hasil ini berupa halaman web atau respon JSON yang dikirim kembali ke Browser client.
📬 Fungsi Git dalam Pengembangan Perangkat Lunak
- Version Control
- Git menyimpan riwayat semua perubahan yang dilakukan pada kode, sehingga memungkinkan programmer untuk melihat, membandingkan, dan memulihkan versi sebelumnya dari proyek.
- Branching and Merging
- Git memungkinkan pembuatan cabang (branch) untuk mengerjakan fitur baru atau perbaikan tanpa mengganggu kode utama (master/main). Hal ini sangat mendukung adanya pengembangan paralel. Setelah pekerjaan selesai di cabang, Git memungkinkan penggabungan (merge) cabang tersebut kembali ke cabang utama, menyatukan perubahan dengan cara yang terkelola.
- Kolaborasi
- Git adalah sistem terdistribusi, artinya setiap programmer memiliki salinan lengkap dari repositori. Ini memungkinkan kolaborasi tim dengan sinkronisasi yang efisien. Programmer juga dapat mengusulkan perubahan yang harus ditinjau oleh tim sebelum digabungkan ke cabang utama.
- Backup and Recovery
- Dengan Git, setiap salinan repositori adalah cadangan dari proyek, mengurangi risiko kehilangan data.
- Tracking Changes
- Adanya commit messages memungkinkan para programmer untuk menjelaskan apa yang telah diubah dan mempermudah pelacakan perubahan. Siapa yang membuat perubahan, dan kapan perubahan tersebut dilakukan. Dengan
diffs
misalnya kita bisa mmebandingkan versi file untuk melihat perubahan secara detail.
- Adanya commit messages memungkinkan para programmer untuk menjelaskan apa yang telah diubah dan mempermudah pelacakan perubahan. Siapa yang membuat perubahan, dan kapan perubahan tersebut dilakukan. Dengan
- Integrasi dengan Alat lain
- Git dapat diintegrasikan dengan alat CI/CD untuk otomatisasi build, testing, dan deployment. Contoh Integrasi lain adalah IDE. Banyak IDE dan editor yang mendukung integrasi Git, sehingga memudahkan penggunaan langsung.
🔧 Mengapa Django dijadikan permulaan dalam pembelajaran Framework?
Django sendiri adalah platform dengan server-based-application, menurut yang saya dengar Django sangat bagus di bagian backend nya dan hal ini akan memudahkan kita setelah UTS ketika kita ingin mengakses atau menampilkan data yang disediakan oleh server dengan menggunakan flutter
- Konsistensi dan Struktur
- Django mengikuti pola desain Model-View-Template (MVT) yang terstruktur, sehingga memudahkan pemahaman alur aplikasi web.
- Dokumentasi dan Komunitas
- Django memiliki dokumentasi yang sangat lengkap dan terperinci, yang sangat berguna bagi pemula untuk belajar dan menyelesaikan masalah. Selain itu, Django juga memiliki komunitas yang besar dan aktif serta telah banyak digunakan di dunia industri
- Fitur Built-In
- Django menyediakan antarmuka admin yang kuat dan otomatis untuk mengelola data aplikasi tanpa perlu menulis kode tambahan, sangat berguna untuk pemula. Fitur-fitur seperti ORM (Object-Relational Mapping), sistem autentikasi, dan formulir bawaan juga sangat mempermudah pengembangan
- Keamanan
- Django menyediakan banyak fitur keamanan bawaan, seperti perlindungan terhadap serangan CSRF, XSS, dan SQL Injection, yang membantu pemula mengembangkan aplikasi yang aman tanpa harus memahami detail keamanan secara mendalam.
- Skalabilitas dan Kinerja
- Django dirancang untuk menangani aplikasi web besar dan kompleks, dan bisa dioptimalkan lebih lanjut jika diperlukan. Meskipun cocok untuk aplikasi kecil, Django juga mendukung skala besar, jadi pemula dapat memulai dengan proyek kecil dan berkembang ke aplikasi yang lebih besar seiring waktu.
- Pengalaman user dan Pengembangan
- Django menyediakan alat seperti shell interaktif dan server pengembangan bawaan yang mempermudah pengembangan dan pengujian aplikasi. Django juga memiliki dukungan built-in untuk pengujian unit dan integrasi, yang akan membantu pemula untuk menulis dan menjalankan tes aplikasi dengan mudah.
- Konsep kerja KISS dan DRY
- Framework telah memenuhi prinsip KISS (Keep It Short and Simple) dan DRY (Dont Repeat Yourself). KISS berarti kode django yang ditulis harus singkat, mudah dimengerti , dan metode yang tidak lebih dari 40-50 baris. Selain itu, django juga mengikuti prinsip DRY, yaitu software pattern yang sering muncul dapat digantikan dengan
abstraction
sehingga pihak pengembang dapat menyederhanakan proses pengembangan dan membantu mempercepat waktu produksi secara keseluruhan.
- Framework telah memenuhi prinsip KISS (Keep It Short and Simple) dan DRY (Dont Repeat Yourself). KISS berarti kode django yang ditulis harus singkat, mudah dimengerti , dan metode yang tidak lebih dari 40-50 baris. Selain itu, django juga mengikuti prinsip DRY, yaitu software pattern yang sering muncul dapat digantikan dengan
🔑 Mengapa Model pada Django disebut ORM?
Model di Django disebut ORM (Object-Relational Mapping) karena ia menyediakan mekanisme yang memungkinkan developer untuk berinteraksi dan bekerja dengan database menggunakan objek Python (paradigma objek) bukan langsung dengan Query SQL. Dengan menggunakan model, Anda tidak perlu menulis SQL secara langsung dan manual untuk operasi dasar seperti pembuatan tabel, penyimpanan, pembaruan, dan penghapusan data. Django ORM secara otomatis menangani pembuatan dan pengelolaan tabel database melalui sistem migrasi. ORM juga menyediakan API berbasis objek untuk melakukan operasi query. Alih-alih menulis query SQL, Anda dapat menggunakan metode seperti .filter(), .get(), dan .exclude() pada querysets. ORM memungkinkan kita untuk mendefinisikan relasi antar tabel, dan memudahkan kita dalam mendesain schema database.