Template directory dapat disimpan pada satu folder, dimana semua template untuk project disimpan jadi satu. Namun pendekatan ini kurang tepat, karena dengan makin kompleks project, maka organisasi file menjadi sulit.
Oleh karena, disarankan template folder disimpan sesuai dengan directory aplikasi. Salah satu keuntungan folder template berdasarkan lokasi aplikasi yang bersangkutan adalah jika aplikasi yang bersangkutan akan digunakan di project lain, mudah untuk dipindahkan.
Agar django project mengetahui lokasi apps template, kita perlu registrasikan aplikasi yang kita buat pada file settings.py dalam variable INSTALLED_APPS.
Masih melanjutkan file project dari modul sebelumnya, buka file my_app/apps.py (file ini digenerate oleh django), isinya kurang lebih seperti berikut:
from django.apps import AppConfig
class MyAppConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'my_app'
Copy class MyAppConfig, lalu buka file skillplus/settings.py (sesuaikan folder dengan nama project anda).
Cari variable INSTALLED_APPS, lalu tambahkan MyAppConfig. Perhatikan konvensi penulisan adalah nama_direktori.nama_file.nama_class.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'my_app.apps.MyAppConfig',
]
Masih pada file skillplus/settings.py, pastikan pada variable TEMPLATES, terdapat keys APP_DIRS, harus bernilai True (defaultnya adalah True, step ini hanya untuk memastikan saja).
buka folder my_app, lalu tambahkan folder templates/my_app/.
Perhatian: penamaan folder templates harus menggunakan kata templates, sementara untuk subfoloder my_app, disamakan dengan nama app folder yang Anda buat.
Kemudian tambahkan file example.html (silakan gunakan nama file yang Anda inginkan). Untuk isi file silakan gunakan html yang Anda inginkan, pada tutorial digunakan html berikut:
<html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h1>Using Django Template</h1> </body> </html>
Berikutnya, buka file my_app/views.py, tambahkan fungsi view untuk memanggil template. (lihat bagian comment menggunakan template.
from django.http import Http404, HttpResponse, HttpResponseRedirect from django.shortcuts import render from django.urls import reverse sp_cat = { 'web': 'Web Dev Page', 'ds' : 'Data Science Page', 'iot' : 'IoT Dev Page' } def cat_view(request, cat): try: res = sp_cat[cat] return HttpResponse(res) except: raise Http404("404 Category Not Found") def numpg_view(request, numpg): cat_lst = list(sp_cat.keys()) try: cat = cat_lst[numpg] page = reverse("bycat", args=[cat]) return HttpResponseRedirect(page) except: raise Http404("404 Category Not Found") def add_view(request, num1, num2): res = num1 + num2 return HttpResponse(str(res)) #menggunakan template def example_view(request): return render(request, 'my_app/example.html')
Kemudian buka file my_app/urls.py, tambahkan path seperti dibawah.
from django.urls import URLPattern, path from . import views urlpatterns = [ path('', views.example_view), #path untuk mengakses templates example.html path('<int:numpg>/', views.numpg_view), path('<str:cat>/', views.cat_view, name="bycat"), path('<int:num1>/<int:num2>', views.add_view), ]
Jalankan web server, lalu buka url http://127.0.0.1:8000/my_app, sesuai ekspektasi, kita sudah berhasil menggunakan template.