Pendahuluan
Sebagai refresher dari modul sebelumnya, kita sudah pelajari, view berguna untuk menampilkan informasi apa yang akan ditampilkan, sementara URL adalah lokasi dimana informasi itu dapat dicapai.
Jadi setiap view akan berpasangan dengan URL yang akan didefinisikan dalam variable urlpatterns.
File URL configuration dapat dilakukan dalam level django app atau django project.
Kita menghubungkan view dengan URL menggunakan fungsi path(), dengan parameter
- route: string berisi URL pattern, django akan melakukan scan kedalam urlpatterns untuk mencari string route.
- view: view yang akan ditampilkan ketika route match. Dapat berupa include file view atau fungsi yang terdapat dalam file view.py.
- kwargs: keyword arguments yang akan dipass ke view berupa dictionary (optional).
- name: nama dari URL, dapat digunakan sebagai reference. (optional).
Berikut beberapa pendekatan cara membuat view:
Function Views Basic
views berupa function sudah kita gunakan pada modul sebelumnya.
Anda dapat melanjutkan project dari modul sebelumnya atau membuat baru. Pada tutorial akan digunakan project sebelumnya.
Buka file my_app/views.py,
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("Hello from my_app views..")
Karena kita membuat view yang akan ditampilkan ke user, maka diperlukan library HttpResponse yang diimport dari django.http.
Untuk membuat fungsi view, sama seperti kita membuat fungsi dalam bahasa Python, yaitu menggunakan keyword def. Nama fungsi bebas, silakan dibuat relevan dengan context view yang akan dibuat.
Fungsi view akan mengembalikan berupa HttpResponse. Saat ini kita mengembalikan murni text saja.
Setelah fungsi view selesai dibuat, selanjutnya kita menghubungkan view dengan URL. File URL yang akan digunakan adalah level application.
Buka file my_app/urls.py
from django.urls import URLPattern, path
from . import views
#semua route akan diawali dengan route yang didefinisikan dalam project level URL.
#dalam hal ini adalah my_app/
urlpatterns = [
path('', views.index, name='index')
]
Library yang diperlukan adalah path yang diimport dari django.urls, dan views itu sendiri. Perhatikan perintah from . import views, akan mengimport file views pada direktory yang sama dengan file urls.py.
Selanjutnya kita definisikan urlpatterns list, yang akan berisi path dengan route adalah empty string.
Perhatian empty string menunjukan root untuk application level, bukan project level.
Kita sedikit loncat, pada file URL level aplikasi (skillplus/urls.py), akan didefinisikan end point untuk my_app adalah my_app/, jadi semua route didalam my_app/urls.py akan diawali dengan my_app/.
Parameter kedua dari fungsi path adalah fungsi dari view, yaitu views.index (fungsi index adalah fungsi yang dibuat pada file views.py).
Parameter ketiga adalah name (optional). Kita beri nama path yang dibuat dengan nama index.
Selanjutnya kita buka skillplus/urls.py (project level, pada tutorial project bernama skillplus).
"""skillplus URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/4.0/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('my_app/', include("my_app.urls")),
path('admin/', admin.site.urls),
]
Kita akan menggunakan library include yang diimport dari django.urls.
Kita menghubungkan my_app/urls.py (app level) dengan skillplus/urls.py (project level) dengan menambahkan entry pada urlpatterns, yaitu path(‘my_app/’, include(“my_app.urls”)).
route yang digunakan adalah my_app/ dan views yang digunakan adalah apa yang sudah didefinsikan dalam my_app.urls.
Latihan
Tambahkan route root untuk level project (saat ini belum ada).
Solusi
Anda dapat menambahkan fungsi view langsung pada file skillplus/urls.py atau membuat file skillplus/views.py.
Walaupun dapat dilakukan, pendekatan menambah fungsi pada file urls.py tidak disarankan.
Pada tutorial akan dibuat file views.py, buat fungsi baru untuk menampilkan view, pada tutorial digunakan nama fungsi homepage.
from django.http import HttpResponse
def homepage(request):
return HttpResponse("This is homepage 1..")
Kemudian import fungsi homepage, dan tambahkan routing didalam urlpatterns pada file skillplus/urls.py.
"""skillplus URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/4.0/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.http import HttpResponse
from django.urls import path, include
#import fungsi view homepage
from . import views
urlpatterns = [
path('my_app/', include("my_app.urls")),
path('admin/', admin.site.urls),
path("", views.homepage, name="homepage") #tambahkan routing untuk homepage.
]
Sampai disini kita sudah membahas lebih mendalam menggunakan fungsi view basic.