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.
VIDEO
Github : https://github.com/halovina/e-wallet/tree/django-custom-decorator
Baca artikel lainya: Mini Wallet Bagian 1 - Django Template dan Static File Mini Wallet Bagian 2 - Django Template Base HTML Mini Wallet Bagian 3 - Django Model dan Koneksi Database Mysql Mini Wallet Bagian 4 - Django User Register Mini Wallet Bagian 5 - Django Session Login Mini Wallet Bagian 6 - Django Model CRUD Tutorial bassic Mysql bagian 1 - Create Read Update Delete Tutorial bassic Mysql bagian 2 - Inner, Left, Right, Cross Join Tutorial bassic Mysql bagian 3 - Filtering Data Tutorial bassic Mysql bagian 4 - Grouping Data Tutorial bassic Mysql bagian 5 - Operator dan Clausa Tutorial bassic Mysql bagian 6 - Replace Statement Tutorial bassic Mysql bagian 7 - Constraint Data Tutorial bassic Mysql bagian 8 - Mengubah Struktur tabel Tutorial bassic Mysql bagian 9 - Subquery Tutorial bassic Mysql bagian 10 - Virtual Tabel Tutorial bassic Mysql bagian 11 - Control Flow Function Membuat service OTP bagian 1 - OTP dan PIN Membuat service OTP bagian 2 - Sequence Diagram Membuat service OTP bagian 3 - Model dan Serializer Membuat service OTP bagian 4 - Validate OTP Membuat service OTP bagian 5 - Api Client Service Membuat service user login bagian 1 - Konfigurasi Database Membuat service user login bagian 2 - Serializer dan JWT Membuat CRUD service product bagian 1 - Models Product Membuat CRUD service product bagian 2 - Function Serializer Membuat CRUD service product bagian 3 - Api Client Service Membaut CRUD service product bagian 4 - Auth User Membuat CRUD service product bagian 5 - TDR File Log Membuat CRUD service product bagian 6 - Unit Test Django upload file menggunakan FileSystemStorage