আমি কীভাবে Django-তে Context Processors সম্পর্কে শিখলাম
আমি Django ব্যবহার করে একটি অনলাইন অ্যাকসেসরিজ শপ তৈরি করছি।
আমি পণ্যের ক্যাটাগরি দেখানোর জন্য একটি নেভবার (navbar) তৈরি করেছি। শুরুতে, আমি ক্যাটাগরিগুলো হার্ড-কোড (hard-code) করে দিয়েছিলাম। এটি কিছু সময়ের জন্য কাজ করেছিল।
তারপর আমি একটি সমস্যা দেখতে পেলাম। যদি আমি একটি নতুন ক্যাটাগরি যোগ করি, তবে আমাকে ম্যানুয়ালি নেভবারটি আপডেট করতে হবে। এটি অদক্ষ পদ্ধতি।
আমার প্রথম চিন্তা ছিল ভিউ (view)-এর context-এর মাধ্যমে ক্যাটাগরিগুলো পাস করা। শীঘ্রই আমি দ্বিতীয় একটি সমস্যা দেখতে পেলাম। প্রতিটি পেজে নেভবার প্রয়োজন। এর মানে হলো আমাকে প্রতিটি ভিউতে একই কোড বারবার লিখতে হবে। এটি কোডকে অগোছালো করে তোলে।
আমি আরও ভালো একটি উপায় খুঁজে পেলাম: Django Context Processors।
Context processors সমস্ত টেমপ্লেটের জন্য ডেটা সহজলভ্য করে তোলে। আপনাকে প্রতিটি ভিউ থেকে ডেটা পাস করার প্রয়োজন নেই।
নিচের বিষয়গুলোর জন্য context processors ব্যবহার করুন:
- নেভিগেশন ক্যাটাগরি
- সাইট সেটিংস
- ইউজার নোটিফিকেশন
- শপিং কার্ট ডেটা
একটি context processor হলো একটি Python ফাংশন। এটি একটি request অবজেক্ট গ্রহণ করে এবং একটি ডিকশনারি (dictionary) রিটার্ন করে।
উদাহরণ:
def custom_context(request):
return {
"custom_value": "hello from context processors"
}
আপনাকে অবশ্যই আপনার settings-এ ফাংশনটি রেজিস্টার করতে হবে। TEMPLATES সেটিং-এর ভেতরে context_processors লিস্টে এটি যোগ করুন।
উদাহরণ:
'OPTIONS': {
'context_processors': [
'myapp.context_processors.custom_context',
],
},
এখন, আপনি আপনার টেমপ্লেটে এভাবে ডেটা ব্যবহার করতে পারেন:
{{ custom_value }}
এটি আমার সমস্যার সমাধান করে দিল। আমার নেভবার এখন প্রতিটি পেজে স্বয়ংক্রিয়ভাবে ক্যাটাগরি ডেটা পেয়ে যাচ্ছে। আমাকে আর কোড ডুপ্লিকেট করতে হচ্ছে না।
ফিচার তৈরি করার সময় প্রায়ই নতুন নতুন ধারণা শেখা যায়। আমার ক্ষেত্রে এটি ছিল context processors।
উৎস: https://dev.to/merdas369/how-i-learned-about-context-processors-in-django-5e2h