Django Template – App Directory Template

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.

Sharing is caring:

Leave a Comment