Bagaimana Saya Belajar Tentang Context Processors di Django
Saya sedang membangun toko aksesori online dengan Django.
Saya membuat navbar untuk menampilkan kategori produk. Awalnya, saya melakukan hard-code pada kategori tersebut. Ini berhasil untuk sementara waktu.
Kemudian saya melihat sebuah masalah. Jika saya menambah kategori baru, saya harus memperbarui navbar secara manual. Ini tidak efisien.
Pemikiran pertama saya adalah mengirimkan kategori melalui context di dalam view saya. Tak lama kemudian, saya melihat masalah kedua. Setiap halaman membutuhkan navbar. Ini berarti saya akan mengulang kode yang sama di setiap view. Hal ini membuat kode menjadi berantakan.
Saya menemukan cara yang lebih baik: Django Context Processors.
Context processors membuat data tersedia untuk semua template. Anda tidak perlu mengirimkan data dari setiap view.
Gunakan context processors untuk:
- Kategori navigasi
- Pengaturan situs
- Notifikasi pengguna
- Data keranjang belanja
Context processor adalah sebuah fungsi Python. Fungsi ini menerima objek request dan mengembalikan sebuah dictionary.
Contoh:
def custom_context(request):
return {
"custom_value": "hello from context processors"
}
Anda harus mendaftarkan fungsi tersebut di dalam settings. Tambahkan ke dalam daftar context_processors di dalam pengaturan TEMPLATES.
Contoh:
'OPTIONS': {
'context_processors': [
'myapp.context_processors.custom_context',
],
},
Sekarang, Anda dapat menggunakan data tersebut di dalam template seperti ini:
{{ custom_value }}
Ini menyelesaikan masalah saya. Navbar saya sekarang mendapatkan data kategori secara otomatis di setiap halaman. Saya tidak perlu lagi menduplikasi kode.
Membangun fitur sering kali mengajarkan konsep-konsep baru. Bagi saya, itu adalah context processors.
Sumber: https://dev.to/merdas369/how-i-learned-about-context-processors-in-django-5e2h