تجاوز get_queryset والقوالب
تخصيص البيانات وأسماء القوالب لكل عرض
تجاوز get_queryset والقوالب درس مجاني في Django Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Django Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Django Academy 4 دروس في المجموع.
اجعل العروض العامة تناسبك
توفر العروض العامة إعدادات افتراضية منطقية، لكن التطبيقات الواقعية تحتاج إلى تعديلات. يمكنك تجاوز بعض نقاط الربط من أجل تخصيصها. 🔧
ما الذي يفعله get_queryset
يحدد get_queryset الصفوف التي يعمل عليها العرض، لذا يتيح لك تجاوزه تصفية النتائج أو ترتيبها.
التصفية باستخدام get_queryset
أعد queryset مُصفّى لعرض الصفوف التي تريدها فقط، مثل المنشورات المنشورة.
class PostList(ListView):
model = Post
def get_queryset(self):
return Post.objects.filter(published=True)قراءة عنوان URL أو المستخدم
داخل get_queryset يمكنك قراءة self.request، وبذلك يمكنك حصر النتائج بالمستخدم الذي سجّل دخوله.
def get_queryset(self):
return Post.objects.filter(author=self.request.user)تجاوز template_name
ألا يعجبك مسار القالب الافتراضي؟ عيّن template_name للإشارة إلى أي قالب تختاره.
class PostList(ListView):
model = Post
template_name = "blog/home.html"تجاوز متغير السياق
استخدم template_name مع context_object_name حتى يقرأ قالبك المخصص البيانات من خلال متغير واضح.
class PostList(ListView):
template_name = "blog/home.html"
context_object_name = "posts"إضافة سياق إضافي
تجاوز get_context_data لتمرير قيم إضافية، مثل عنوان الصفحة، إلى جانب الكائنات.
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
ctx["title"] = "Blog"
return ctxاستدعِ super أولًا دائمًا
في get_context_data، استدعِ super() أولًا للاحتفاظ بالكائنات التي أضافها العرض مسبقًا، ثم أضف كائناتك.
تخصيص اللاحقة
هل تفضل model_browse على model_list؟ عيّن template_name_suffix لتغيير اللاحقة التي يضيفها Django فقط.
class PostList(ListView):
template_name_suffix = "_browse"ترتيب النتائج
تجاوز get_queryset من أجل ترتيب الصفوف، كعرض أحدث المنشورات أولًا مثلًا.
def get_queryset(self):
return Post.objects.order_by("-created")نقاط ربط صغيرة، تحكم كبير
باستخدام هذه التجاوزات القليلة، يمكنك تكييف العروض العامة مع أي احتياج تقريبًا مع الحفاظ على بنيتها المنظمة. 💡
تحقق سريع
ما الغرض من تجاوز get_queryset؟
مراجعة: تخصيص العروض
لقد شكّلت العروض العامة باستخدام get_queryset وtemplate_name وget_context_data، وخصصت البيانات والقوالب من دون فقدان بساطتها. 🎉
تعلم Python مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «تجاوز get_queryset والقوالب» مجاني؟
نعم — نص درس «تجاوز get_queryset والقوالب» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Django Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Django Academy 4 دروس في المجموع.
ماذا ستتعلم في «تجاوز get_queryset والقوالب»؟
تخصيص البيانات وأسماء القوالب لكل عرض تتمرن على Django Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Django Academy؟
لا تُشترط خبرة سابقة. Django Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «تجاوز get_queryset والقوالب»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Django Academy هذا؟
نعم. كل درس في Django Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ListView و DetailView
- CreateView و UpdateView
- DeleteView و success_url
- تجاوز get_queryset والقوالب