Django View dan URL – HttpResponseRedirect

Ada kalanya kita perlu melakukan redirect link yang diakses oleh client. Untuk keperluan tersebut kita gunakan fungsi HttpResponseRedirect().

Masih menggunakan project sebelumnya, misalkan kita ingin melakukan redirect ketika user memasukan alamat my_app/0 ke my_app/web dan seterusnya.

Buka file my_app/views.py, modifikasi code seperti berikut:

from django.http import Http404, HttpResponse, HttpResponseRedirect
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")

#menggunakan HttpResponseRedirect
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))

Pertama kita import library HttpResponseRedirect dan reverse.

Buat fungsi view untuk melakukan redirect, pada tutorial digunakan numpg_view.

Didalam fungsi, pertama buat list yang berisi keys dari dictionary kategori.

Kita gunakan fungsi reverse untuk mengakses url yang akan digunakan untuk redirect. Fungsi reverse memerlukan parameter nama dari path dan argumen yang diperlukan oleh url tersebut. Akan lebih jelas setelah kita mengubah file my_app/urls.py.

Selanjutnya kita redirect ke url hasil fungsi reverse.

Buka file my_app/urls.py, modifikasi seperti dibawah:

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

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

Kita menambahkan path baru yaitu path(‘/’, views.numpg_view).

kemudian, pada path kedua, kita tambahkan name=”bycat”, yang akan digunakan oleh fungsi reverse pada file my_app/views.py.

Buka web browser, lalu masukan url misalnya my_app/1, otomatis akan diredirect ke my_app/ds

Sharing is caring:

Leave a Comment