DEMO TP
A. Django
Secara ringkas terdapat 6 file utama dalam aplikasi Django yang dapat digunakan untuk memulai pengembangan:
models.py: digunakan untuk mendefinisikan struktur data yang akan digunakan dalam aplikasi. Struktur data ini disusun dalam sebuah kelas yang mewakili tabel-tabel dalam database. Atribut dalam kelas jadi kolom di tabel.
Views.py: Menangani logika tampilan. Untuk itu diperlukan sebuah fungsi atau kelas yang akan menangani permintaan HTTP. Fungsi ini akan mengambil data dari model, melakukan operasi, dan mengembalikan data ke template.
Form.py: File ini digunakan untuk mendefinisikan formulir yang digunakan dalam aplikasi untuk menerima input dari pengguna. Dia menggunakan modelForm dari django.forms utk buat form secara otomatis. Kemudian gunakan strip_tags untuk hapus tag html dalam teks sehingga pengguna aman dari elemen html yang berbahaya. Disini terdapat ulasanEntryForm yang akan dipakai sebagai model yang terdiri dari berbagai daftar field yakni nama_produk_ulas, rating dan komentar. Disini juga terdapat cleaning data bernama clean_nama_produk_ulas dan clean_komentar utk mebersihkan data input pada nama_produk_ulas dan komentar.
Urls.py:Routing URL dan Manajemen Akses
Serializers.py: File ini digunakan untuk mengubah data dari format model Django ke format yang bisa dibaca oleh API (misalnya JSON). Serialization adalah proses untuk mengonversi objek Python (seperti model Django) ke dalam format yang bisa dipindahkan (misalnya JSON) dan sebaliknya, deserialization untuk mengonversi data kembali ke dalam format objek Python yang bisa disimpan di database.
Test.py: File ini digunakan untuk menulis pengujian unit (unit tests) yang memastikan bahwa aplikasi Django berfungsi dengan benar. Django menyediakan kerangka kerja untuk menulis pengujian yang secara otomatis memeriksa apakah fungsi atau fitur dalam aplikasi berjalan sebagaimana mestinya.
1. models.py
File ini berfungsi untuk mendefinisikan struktur database. Di dalamnya, kamu membuat kelas-kelas yang mewakili tabel-tabel dalam database. Setiap atribut dalam kelas ini menjadi kolom di tabel. Nama kelas pada aplikasi ini adalah UlasanEntry, yang berisi atribut-atribut seperti:
user: MenggunakanForeignKeyuntuk menghubungkan setiap ulasan dengan pengguna tertentu.waktu: Menyimpan waktu ketika ulasan dibuat, dengan auto-generate menggunakanauto_now_add=True.nama_produk_ulas: Nama produk yang diulas oleh pengguna.rating: Rating produk yang diberikan oleh pengguna dalam rentang 1 hingga 5.komentar: Komentar teks yang ditulis oleh pengguna terkait produk.
Fungsi:
Menyusun struktur data yang akan disimpan dalam database.
Mengatur hubungan antar model, misalnya hubungan antara ulasan dan pengguna dengan
ForeignKey.
2. views.py
File ini berfungsi untuk menangani logika tampilan. Di dalamnya, kamu menentukan fungsi atau kelas yang akan menanggapi permintaan HTTP (seperti GET atau POST) dari pengguna.
Berikut adalah penjelasan inti dari setiap fungsi di kode yang diberikan:
A. show_ulasan_main(request)
Penjelasan:
Fungsi ini digunakan untuk menampilkan halaman utama ulasan. Hanya pengguna yang sudah login yang dapat mengakses halaman ini. Fungsi ini juga menyediakan data pengguna yang sedang login dan mengirimkannya ke template ulasan_main.html.
B. create_ulasan_entry(request)
Penjelasan:
Fungsi ini menangani pembuatan ulasan baru. Jika metode permintaan adalah POST, maka data form dikumpulkan dan disimpan sebagai entri ulasan. Setiap entri ulasan akan terhubung dengan pengguna yang sedang login. Jika metode permintaan adalah GET, formulir untuk entri ulasan baru ditampilkan.
C. show_json(request)
Penjelasan:
Fungsi ini mengembalikan semua entri ulasan dalam format JSON. Fungsi ini menggunakan Django REST Framework untuk serialisasi objek UlasanEntry dan mengirimkan data sebagai respons API.
D. edit_ulasan(request, id)
Penjelasan:
Fungsi ini digunakan untuk mengedit ulasan yang sudah ada. Ulasan yang ingin diedit diambil berdasarkan ID. Jika form berhasil disubmit, maka perubahan disimpan dan pengguna diarahkan kembali ke halaman utama ulasan.
E. delete_ulasan(request, id)
Penjelasan:
Fungsi ini digunakan untuk menghapus ulasan berdasarkan ID. Setelah ulasan dihapus, pengguna akan diarahkan kembali ke halaman utama ulasan.
F. add_ulasan_entry_ajax(request)
Penjelasan:
Fungsi ini digunakan untuk menambah ulasan baru menggunakan AJAX. Data ulasan (seperti nama produk, rating, dan komentar) diterima melalui POST, kemudian disimpan dalam database. Fungsi ini mengembalikan respons HTTP 201 jika ulasan berhasil dibuat. Oh iya dia gunakan strip_tags untuk hindari input HTML yang berbahaya.
3. Forms.py
File ini digunakan untuk mendefinisikan formulir yang digunakan dalam aplikasi, misalnya untuk menambahkan atau mengedit ulasan.
from django.forms import ModelForm
from ulasan.models import UlasanEntry
from django.utils.html import strip_tags
class UlasanEntryForm(ModelForm):
class Meta:
model = UlasanEntry
fields = ["nama_produk_ulas", "rating", "komentar"]
def clean_nama_produk_ulas(self):
nama_produk_ulas = self.cleaned_data["nama_produk_ulas"]
return strip_tags(nama_produk_ulas)
def clean_komentar(self):
komentar = self.cleaned_data["komentar"]
return strip_tags(komentar)
Di File ini terdapat forms.ModelForm untuk membuat form yang secara otomatis terhubung dengan model (misalnya, UlasanEntry), memungkinkan pengguna untuk menginput data ulasan.
4. URLS.py & Serializers.py
I. urls.py (Routing URL dan Manajemen Akses)
from django.urls import path: Mengimpor fungsipathuntuk mendefinisikan URL.app_name = 'ulasan': Menentukan namespace aplikasi.path('', show_ulasan_main, name='show_ulasan_main'): URL root yang memanggilshow_ulasan_main.path('create-ulasan-entry', create_ulasan_entry, name='create_ulasan_entry'): URL untuk membuat ulasan baru.path('json/', show_json, name='show_json'): URL untuk menampilkan data dalam format JSON.path('edit-ulasan/<uuid:id>', edit_ulasan, name='edit_ulasan'): URL untuk mengedit ulasan berdasarkan ID.path('delete/<uuid:id>', delete_ulasan, name='delete_ulasan'): URL untuk menghapus ulasan berdasarkan ID.path('create-ulasan-entry-ajax', add_ulasan_entry_ajax, name='add_ulasan_entry_ajax'): URL untuk menambah ulasan via AJAX.
II. serializers.py (Mengubah Data Menjadi Format yang Dapat Dibaca API dan Validasi dan Deserialisasi Data agar bisa disimpan secara benar ke Database)
from rest_framework import serializers: Mengimpor modul serializer untuk API.from .models import UlasanEntry: Mengimpor modelUlasanEntryuntuk diserialisasikan.class UlasanEntrySerializer(serializers.ModelSerializer): Mendefinisikan serializer untuk modelUlasanEntry.username = serializers.CharField(source='user.username', read_only=True): Menambahkan fieldusernameuntuk menampilkan nama pengguna.class Meta: Bagian untuk menentukan model dan field yang diserialisasikan.model = UlasanEntry: Menyatakan model yang diserialisasikan adalahUlasanEntry.fields = ['id', 'username', 'waktu', 'nama_produk_ulas', 'rating', 'komentar']: Menentukan field yang akan disertakan dalam output JSON.
5. Test.py
= memungkinkan pengembang untuk memastikan bahwa aplikasi mereka bekerja dengan baik, dengan melakukan pengujian unit secara terstruktur dan otomatis. from django.test import TestCase