Django Template – Passing Context Variable

Pada modul sebelumnya kita sudah menggunakan fungsi render. Pada modul ini kita akan bahas lebih mendalam dengan menggunakan context variable.

Melanjutkan project modul sebelumnya, kita akan menambahkan template, view dan url path baru.

Buka file my_app/views.py, lalu tambahkan view baru.

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))

def example_view(request):
    return render(request, 'my_app/example.html')

#menggunakan template variable
def variable_view(request):
    my_var = {'first_name': 'Budi', 'last_name': 'Dech',
                'my_list': ['Python', 'Photoshop'],
                'my_dict' : {'key_dict2': 'value_dict2'}
    }
    return render(request, 'my_app/variable.html', context= my_var)

Fungsi variable_view akan memiliki dict my_var yang berisi dict, list dan dict lainnya. Tujuannya sebagai demo cara mengakses variable tersebut dari file template.

Kemudian, pada fungsi render, digunakan parameter ketiga, yaitu context yang akan diisi dengen variable my_var.

Buka file my_app/urls.py, tambahkan path baru

from django.urls import URLPattern, path
from . import views

urlpatterns = [
    path('', views.example_view), 
    path('variable/', views.variable_view), #path templates dan variable
    path('<int:numpg>/', views.numpg_view),
    path('<str:cat>/', views.cat_view, name="bycat"),
    path('<int:num1>/<int:num2>', views.add_view),
]

Buat file baru my_app/templates/my_app/variable.html (silakan gunakan nama file sesuai kebutuhan Anda).

<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>Menggunakan Context Variable</h1>
    <p>Nama pertama adalah <strong>{{first_name}}</strong>, nama belakang adalah <strong>{{last_name}}</strong></p>
    <p>Teknikal skill : {{my_list.0}}, {{my_list.1}}</p>
    <p>Variable dict: {{my_dict.key_dict2}}</p>
    <p>{# baris commentar #}</p>
</body>
</html>

Untuk mengakses variable yang dipasing dari fungsi render, digunakan tanda {{}}.

Perhatikan untuk mengakses list index, digunakan notasi dot. Demikian juga untuk mengakses dict key dari dict kedua.

Selain menggunakan html comment yaitu dengan tanda <!– –>, kita juga bisa menambahkan baris komentar dengan menggunakan tanda {# #}, silakan pilih cara menggunakan komentar yang cocok dengan Anda.

Jika kita jalankan web server, lalu buka alamat /my_app/variable/, akan tampil seperti berikut.

Sharing is caring:

1 thought on “Django Template – Passing Context Variable”

Leave a Reply to Mohammad Iqbal Cancel reply