Pada modul ini kita akan bahas fungsi view yang lebih advanced yaitu
- Menambakan logic kedalam view.
- Menggunakan dynamic path.
Masih melanjutkan project modul sebelumnya, buka file my_app/views.py, kemudia modifikasi code menjadi seperti berikut:
from django.shortcuts import render
from django.http import HttpResponse
sp_cat = {
'web': 'Web Dev Page',
'ds' : 'Data Science Page',
'iot' : 'IoT Dev Page'
}
def cat_view(request, cat):
return HttpResponse(sp_cat[cat])
def add_view(request, num1, num2):
res = num1 + num2
return HttpResponse(str(res))
Disini kita memiliki python dict yang berisi categori.
Kita juga definisikan 2 fungsi, yaitu cat_view untuk menampilkan kategori page dan add_view fungsi untuk menampilkan hasil penjumlahan.
Perhatikan kedua fungsi tersebut memerlukan paramter tambahan, yang diperoleh dari URL yang dimasukan oleh client.
Kemudian buka file my_app/urls.py, modifikasi code menjadi seperti berikut:
from django.urls import URLPattern, path
from . import views
urlpatterns = [
path('<str:cat>/', views.cat_view),
path('<int:num1>/<int:num2>', views.add_view),
]
path pertama akan menerima category dan harus berupa string, dengan fungsi view yang digunakan adalah cat_view. Contoh url adalah my_app/web/
path kedua akan menerima dua parameter dan harus berupa integer, fungsi yang akan menghandle adalah add_view. Contoh url adalh my_app/1/3
Jika Anda jalankan web server dengan perintah
$ python manage.py runserver
Lakukan testing dengan memasukan path my_app/web/, path my_app/iot/ atau my_app/1/3, maka sesuai ekspektasi akan ditampilkan view yang bersangkutan.
