Bagaimana Saya Belajar Tentang Context Processors dalam Django
Saya sedang membina sebuah kedai aksesori dalam talian dengan Django.
Saya membina navbar untuk memaparkan kategori produk. Pada mulanya, saya memasukkan kategori secara hard-coded. Ini berfungsi buat seketika.
Kemudian saya melihat satu masalah. Jika saya menambah kategori baharu, saya perlu mengemas kini navbar secara manual. Ini tidak cekap.
Fikiran pertama saya adalah untuk menghantar kategori melalui context dalam view saya. Tidak lama kemudian, saya melihat masalah kedua. Setiap halaman memerlukan navbar. Ini bermakna saya perlu mengulang kod yang sama dalam setiap view. Ini menyebabkan kod menjadi berselerak.
Saya menemui cara yang lebih baik: Django Context Processors.
Context processors menjadikan data tersedia untuk semua template. Anda tidak perlu menghantar data daripada setiap view.
Gunakan context processors untuk:
- Kategori navigasi
- Tetapan laman web
- Pemberitahuan pengguna
- Data bakul membeli-belah
Context processor ialah satu fungsi Python. Ia menerima objek request dan mengembalikan sebuah dictionary.
Contoh:
def custom_context(request):
return {
"custom_value": "hello from context processors"
}
Anda mesti mendaftarkan fungsi tersebut dalam settings anda. Tambah ia ke dalam senarai context_processors di dalam tetapan TEMPLATES.
Contoh:
'OPTIONS': {
'context_processors': [
'myapp.context_processors.custom_context',
],
},
Sekarang, anda boleh menggunakan data tersebut dalam template anda seperti ini:
{{ custom_value }}
Ini menyelesaikan masalah saya. Navbar saya kini mendapat data kategori secara automatik pada setiap halaman. Saya tidak lagi perlu menduplikasi kod.
Membina ciri-ciri baharu sering mengajar anda konsep-konsep baharu. Bagi saya, ia adalah context processors.
Sumber: https://dev.to/merdas369/how-i-learned-about-context-processors-in-django-5e2h