Skip to content

fadhlanhasyim/pbp-django-assignments

Repository files navigation

Proyek Django PBP

Pemrograman Berbasis Platform (CSGE602022) - diselenggarakan oleh Fakultas Ilmu Komputer Universitas Indonesia, Semester Ganjil 2022/2023

Nama: Fadhlan Hasyim

NPM: 2106652215

Kelas: PBP F

Kode Asdos: BYN

Pendahuluan

Repositori ini digunakan sebagai wadah untuk mengumpulkan tugas Proyek Django PBP.

Link Deployment

Aplikasi Heroku yang sudah di-deploy dapat diakses melalui link berikut: https://pbp-django-assignments.herokuapp.com/

Jawaban Pertanyaan

Pertanyaan 1: Buatlah bagan yang berisi request client ke web aplikasi berbasis Django beserta responnya dan jelaskan pada bagan tersebut kaitan antara urls.py, views.py, models.py, dan berkas html

Jawab:

Setiap request yang masuk akan diproses oleh urls.py dan akan diteruskan ke views.py yang sesuai. Jika request berhubungan dengan data, maka views.py akan melakukan query ke models.py dan database. Hasil query akan dikembalikan lagi ke views.py. Setelah itu, hasil yang sudah diperoleh akan dikembalikan lagi ke client dalam bentuk HTML sebagai response.

Pertanyaan 2: Jelaskan kenapa menggunakan virtual environment? Apakah kita tetap dapat membuat aplikasi web berbasis Django tanpa menggunakan virtual environment?

Jawab:

Jawaban untuk pertanyaan kedua adalah bisa. Namun, terdapat beberapa kekurangan jika kita tidak menggunakan virtual environment. Berikut adalah kekurangan-kekurangan tersebut:

  • Sistem operasi Linux dan masOS hadir dengan Python versi tertentu yang digunakan untuk menjalankan internal tasks pada sistem operasi tersebut. Jika kita tidak menggunakan virtual environment pada proyek Django yang sedang kita kerjakan, hal ini dapat mengganggu kinerja sistem operasi tersebut karena bisa saja kita meng-install versi packages yang berbeda sehingga dapat meng-override packages versi lama yang sudah ada. Tentu akan sangat berbahaya jika versi terbaru packages tersebut tidak sesuai dengan kebutuhan yang diperlukan oleh sistem operasi.
  • Proyek yang berbeda bisa saja menggunakan packages yang sama dengan versi yang berbeda. Tanpa menggunakan virtual environment, packages akan di-install secara global. Hal ini akan mengakibatkan saling tindih antar packages yang sama dengan versi yang berbeda sehingga berdampak kepada proyek-proyek yang ada.
  • Akan sulit bagi kita untuk mengetahui apa saja requirements dari suatu proyek jika kita tidak menggunakan virtual environment karena seluruh packages yang digunakan oleh seluruh proyek yang ada akan disimpan di suatu tempat yang sama (site-packages/).

Berkaca dari kekurangan-kekurangan di atas, dengan menggunakan virtual environment, kita seolah-olah memisahkan pengaturan dan packages dari satu proyek Django dengan sistem operasi dan proyek Django lainnya dengan menciptakan lingkungan virtual sendiri. Oleh karena itu, perubahan yang terjadi pada satu proyek, tidak akan memengaruhi sistem operasi maupun proyek lainnya.

Pertanyaan 3: Jelaskan bagaimana cara kamu mengimplementasikan poin 1 sampai dengan 4 di atas.

Jawab:

Hal pertama yang saya lakukan adalah membuat repository dari template yang sudah disediakan. Setelah itu, meng-cloning repository tersebut ke lokal.

Untuk poin 1, saya membuat fungsi show_katalog pada views.py di mana fungsi tersebut menerima satu buah parameter berupa request dan mengembalikan hasil render yang di-assign kepada template katalog.html. Fungsi show_katalog juga mengambil data katalog dari model CatalogItem.

def show_katalog(request):
    data_item_katalog = CatalogItem.objects.all()
    context = {
        'data_item_katalog': data_item_katalog,
        'nama': 'Fadhlan Hasyim',
        'id': '2106652215',
    }
    return render(request, 'katalog.html', context)

Untuk poin 2, saya mendaftarkan fungsi show_katalog pada urls.py sehingga ketika ada request yang masuk dapat diarahkan ke views yang tepat.

...
urlpatterns = [
    path('', show_katalog, name='katalog')
]
...

Untuk poin 3, saya memetakan data yang diperoleh dari views ke dalam templat HTML menggunakan sintaks Django. Untuk kode lengkapnya dapat diakses di sini katalog.html.

Untuk poin 4, saya membuat aplikasi Heroku, lalu mendaftarkan HEROKU_API_KEY dan HEROKU_APP_NAME sebagai secrets. Last but not least, saya menjalankan kembali GitHub Actions yang gagal dan voila! deployment berhasil.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published