Skip to main content

Tugas 4: Pengimplementasian Form dan Autentikasi Menggunakan Django

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


Deskripsi Tugas

Pada tugas ini, kamu akan mengimplementasikan elemen <form>, konsep autentikasi, dan beberapa hal yang sudah kamu pelajari selama tutorial lab.

Checklist untuk tugas ini adalah sebagai berikut:

  • Membuat suatu aplikasi baru bernama todolist di proyek tugas Django yang sudah digunakan sebelumnya.

  • Menambahkan path todolist sehingga pengguna dapat mengakses http://localhost:8000/todolist.

  • Membuat sebuah model Task yang memiliki atribut sebagai berikut:

    • user untuk menghubungkan task dengan pengguna yang membuat task tersebut.

      Kamu dapat menggunakan tipe model models.ForeignKey dengan parameter User.

      Untuk mempelajari lebih lanjut mengenai ForeignKey pada Django, silakan baca dokumentasi Django (atau silakan klik disini).

      Untuk mempelajari lebih lanjut mengenai model User pada Django, silakan klik disini.

    • date untuk mendeskripsikan tanggal pembuatan task.

    • title untuk mendeskripsikan judul task.

    • description untuk mendeskripsikan deskripsi task.

  • Mengimplementasikan form registrasi, login, dan logout agar pengguna dapat menggunakan todolist dengan baik.

  • Membuat halaman utama todolist yang memuat username pengguna, tombol Tambah Task Baru, tombol logout, serta tabel berisi tanggal pembuatan task, judul task, dan deskripsi task.

  • Membuat halaman form untuk pembuatan task. Data yang perlu dimasukkan pengguna hanyalah judul task dan deskripsi task.

    Dokumentasi Django mengenai Form dapat kamu baca disini.

  • Membuat routing sehingga beberapa fungsi dapat diakses melalui URL berikut:

    • http://localhost:8000/todolist berisi halaman utama yang memuat tabel task.
    • http://localhost:8000/todolist/login berisi form login.
    • http://localhost:8000/todolist/register berisi form registrasi akun.
    • http://localhost:8000/todolist/create-task berisi form pembuatan task.
    • http://localhost:8000/todolist/logout berisi mekanisme logout.
  • Melakukan deployment ke Heroku terhadap aplikasi yang sudah kamu buat sehingga nantinya dapat diakses oleh teman-temanmu melalui Internet.

  • Membuat dua akun pengguna dan tiga dummy data menggunakan model Task pada akun masing-masing di situs web Heroku.

  • Membuat sebuah README.md pada folder todolist yang berisi tautan menuju aplikasi Heroku yang sudah kamu deploy serta jawaban dari beberapa pertanyaan berikut:

    • Apa kegunaan {% csrf_token %} pada elemen <form>? Apa yang terjadi apabila tidak ada potongan kode tersebut pada elemen <form>?
    • Apakah kita dapat membuat elemen <form> secara manual (tanpa menggunakan generator seperti {{ form.as_table }})? Jelaskan secara gambaran besar bagaimana cara membuat <form> secara manual.
    • Jelaskan proses alur data dari submisi yang dilakukan oleh pengguna melalui HTML form, penyimpanan data pada database, hingga munculnya data yang telah disimpan pada template HTML.
    • Jelaskan bagaimana cara kamu mengimplementasikan checklist di atas.

Tenggat Waktu Pengerjaan

Tenggat waktu pengerjaan Tugas 4:

29 September 2022 05.00.00 UTC (0 days 0 hours 0 minutes 0 seconds left)

Asisten dosen akan mengecek last commit dari repositori tugas lab, sehingga kamu tidak perlu mengumpulkan tautan repositori ke dalam slot submisi.

Bonus

Kamu akan mendapatkan nilai bonus pada penilaian tugas ini apabila kamu membuat fitur berikut.

  • Tambahkan atribut is_finished pada model Task (dengan default value False) dan buatlah dua kolom baru pada tabel task yang berisi status penyelesaian task dan tombol untuk mengubah status penyelesaian suatu task menjadi Selesai atau Belum Selesai.
  • Tambahkan kolom baru pada tabel task yang berisi tombol untuk menghapus suatu task.

Kedua fitur di atas wajib diimplementaskan (bukan sekedar tombol, melainkan harus dapat melakukan behavior yang diinginkan) jika kamu ingin mendapatkan nilai bonus.

Motivasi: Dengan menyelesaikan fitur bonus, kamu telah mempelajari dasar-dasar CRUD pada Django. 😉