Mini Wallet Bagian 7 - Django Custom Decorator

Subscribe Dengan Account Google Untuk Membaca Artikel Tanpa Iklan
Mini Wallet Bagian 7 - Django Custom Decorator

Apa Itu Decorator ?


Secara sederhana Decorator adalah sebuah fungsi yang membungkus fungsi yang lain.

Decorator digunakan dalam kondisi di mana sebuah objek memiliki responsibility yang didapatkan dari objek yang lain. Responsibility ini menyebabkan adanya nilai tambah pada objek tersebut.

Di tutorial sebelumnya kita telah belajar tentang Django Model Crud.

Di tutorial mini wallet bagian ke-7 ini kita akan belajar bagaimana caranya meng-custom method decorator.

Pastikan Anda telah mengikuti tutorial series Mini Wallet ini dari awal.

Di tutorial ini kita akan membuat decorator untuk memproteksi halaman Tipe Akun, di halaman ini hanya user dengan role administrator saja yang bisa membukanya.

1) Buat Fungsi Decorator


Buka file utils.py di rektori "internal", buat fungsi dengan nama is_administrator().

def is_administrator(function):
def wrapper(request, *args, **kwargs):
chekUser = User.objects.get(id=request.user.id)
if chekUser.is_staff == False:
return HttpResponseRedirect('/home/dashboard')
return function(request, *args, **kwargs)
return wrapper

Perhatikan kode diatas, ketika user is_staff sama dengan False, maka halaman akan di redirect ke halaman dashboad.

2) Import Method Decorator


Tambahkan method is_administrator() di setiap page yang akan di proteksi, perhatikan kode berikut:

@method_decorator(is_administrator)
def dispatch(self, *args, **kwargs):
return super().dispatch(*args, **kwargs)

3) Video Tutorial


Ikuti video tutorial berikut agar Anda lebih paham bagaimana implementasi method decorator di django framework.

Githubhttps://github.com/halovina/e-wallet/tree/django-custom-decorator

Baca artikel lainya:


  1. Mini Wallet Bagian 1 - Django Template dan Static File

  2. Mini Wallet Bagian 2 - Django Template Base HTML

  3. Mini Wallet Bagian 3 - Django Model dan Koneksi Database Mysql

  4. Mini Wallet Bagian 4 - Django User Register

  5. Mini Wallet Bagian 5 - Django Session Login

  6. Mini Wallet Bagian 6 - Django Model CRUD

  7. Tutorial bassic Mysql bagian 1 - Create Read Update Delete

  8. Tutorial bassic Mysql bagian 2 - Inner, Left, Right, Cross Join

  9. Tutorial bassic Mysql bagian 3 - Filtering Data

  10. Tutorial bassic Mysql bagian 4 - Grouping Data 

  11. Tutorial bassic Mysql bagian 5 - Operator dan Clausa

  12. Tutorial bassic Mysql bagian 6 - Replace Statement

  13. Tutorial bassic Mysql bagian 7 - Constraint Data

  14. Tutorial bassic Mysql bagian 8 - Mengubah Struktur tabel

  15. Tutorial bassic Mysql bagian 9 - Subquery

  16. Tutorial bassic Mysql bagian 10 - Virtual Tabel

  17. Tutorial bassic Mysql bagian 11 - Control Flow Function

  18. Membuat service OTP bagian 1 - OTP dan PIN

  19. Membuat service OTP bagian 2 - Sequence Diagram

  20. Membuat service OTP bagian 3 - Model dan Serializer

  21. Membuat  service OTP bagian 4 - Validate OTP

  22. Membuat  service OTP bagian 5 - Api Client Service

  23. Membuat service user login bagian 1 - Konfigurasi Database

  24. Membuat service user login bagian 2 - Serializer dan JWT

  25. Membuat CRUD service product bagian 1 - Models Product

  26. Membuat CRUD service product bagian 2 - Function Serializer

  27. Membuat CRUD service product bagian 3 - Api Client Service

  28. Membaut CRUD service product bagian 4 - Auth User

  29. Membuat CRUD service product bagian 5 - TDR File Log

  30. Membuat CRUD service product bagian 6 - Unit Test

  31. Django upload file menggunakan FileSystemStorage