Sebelum kita membahas bagaimana cara membuat Middleware pada django framework ada baiknya kita memahami terlebih dahulu apa itu Middleware ?
Middleware khususnya di dunia web programming adalah suatu software layer yang berada di antara router dengan controller. Karena posisi dari middleware berada di antara router dengan controller. Middleware pada aplikasi web biasanya digunakan pada bebrapa event diantaranya :
Middleware yang paling umum sering kita dengar meskipun tidak menyadari adalah authentication, untuk mengecek apakah seseorang yang mengakses suatu web sudah log-in dan memiliki hak akses atau belum.
Dan tujuan utama dari adanya middleware adalah agar controller fokus dalam menyelesaikan logika alur bisnis dari suatu flow aplikasi tanpa harus melakukan hal - hal di luar itu seperti validasi input pada setiap flow. Jadi ketika data yang masuk ke controller sudah dalam keadaan bersih dan sudah siap untuk diproses sesuai dengan alur bisnis dari aplikasi tersebut. Dan dengan adanya middleware, kode kita akan lebih reusable, maintainable dan readable.
Dalam dunia teknologi informasi Middleware menjadi salah satu software yang dibuat untuk menghubungkan beberapa proses pada satu atau lebih mesin agar bisa saling berinteraksi di suatu jaringan.
Baca juga : Instalasi dan konfigurasi virtual environment
Dari keterangan diatas kita telah memahami sedikit tentang middleware, selanjutnya kita akan mencoba mengimplementasikanya pada django framework.
from __future__ import absolute_import, division, print_functiontry:
from threading import local
except ImportError:
from django.utils._threading_local import local_thread_locals = local()
def get_current_request():
""" returns the request object for this thread """
return getattr(_thread_locals, "request", None)def get_current_user():
""" returns the current user, if exist, otherwise returns None """
request = get_current_request()
if request:
return getattr(request, "user", None)def thread_local_middleware(get_response):
# One-time configuration and initialization.def middleware(request):
# Code to be executed for each request before
# the view (and later middleware) are called.
_thread_locals.request = request
response = get_response(request)# Code to be executed for each request/response after
# the view is called.
if hasattr(_thread_locals, "request"):
del _thread_locals.request
return responsereturn middleware
buka file settings.py pada main folder project anda, tambahkan middleware diatas, perhatikan kode dibawah ini
MIDDLEWARE = [
--------------
'users.middleware.thread_local_middleware',
]
setelah menyelesaikan dua tahap diatas, saatny melakukan pengujian, misal pada method signals cara implementasinya sebagai berikut :
from apps.middleware import get_current_user@receiver(pre_save, sender={{model_name}})
def update_profile(sender, instance, **kwargs):
user = get_current_user()
print(user)
Implementasi middleware pada django framework selesai, dari study kasus ini kamu bisa mencoba middleware untuk hal-hal yang lain, jika ada pertanyaan tentang python hubungi halovina.com
Baca artikel lainya :