Django Academy · درس

التصفية والبحث وتقسيم الصفحات

جعل استجابات API الكبيرة سهلة الاستخدام

الدرس 4 من 413 خطوة

التصفية والبحث وتقسيم الصفحات درس مجاني في Django Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Django Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Django Academy 4 دروس في المجموع.

الاستجابات الكبيرة مشكلة

تؤدي إعادة آلاف الصفوف في استجابة واحدة إلى البطء وصعوبة التعامل معها. توفر لكم DRF التصفية والبحث وتقسيم الصفحات للحفاظ على قابلية استخدام البيانات المرسلة.

لماذا نبدأ بتقسيم الصفحات؟

يقسم تقسيم الصفحات القائمة الكبيرة إلى صفحات، ليجلب العملاء جزءًا منها في كل مرة بدلًا من جلبها كاملة دفعة واحدة.

تفعيل تقسيم الصفحات

عيّنوا فئة تقسيم صفحات وحجم صفحة افتراضيين في الإعدادات، وستبدأ كل عروض القوائم بتقسيم الصفحات تلقائيًا.

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS':
        'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 10,
}

بنية الاستجابة المقسمة إلى صفحات

يغلّف PageNumberPagination النتائج بالقيمة count ورابطَي next وprevious، ليتمكن العملاء من الانتقال بين الصفحات بسهولة. 📄

أنماط تقسيم الصفحات

اختاروا نمطًا: يستخدم PageNumberPagination أرقام الصفحات، بينما يتيح LimitOffsetPagination للعملاء طلب حد وإزاحة مباشرة.

والآن: التصفية

تضيّق التصفية النتائج وفق قيم حقول محددة، مثل طلب الكتب التي يكون معرّف مؤلفها 5 فقط.

إضافة DjangoFilterBackend

ثبّتوا django-filter، وفعّلوا DjangoFilterBackend، وسردوا الحقول التي يُسمح للعملاء بالتصفية وفقها باستخدام filterset_fields.

class BookViewSet(viewsets.ModelViewSet):
    queryset = Book.objects.all()
    filterset_fields = ['author', 'published_year']

المرشحات كمعلمات استعلام

يجري العملاء التصفية عبر سلسلة استعلام عنوان URL، لذا يعيد طلب مثل /books/?author=5 كتب ذلك المؤلف فقط. 🔍

البحث مقابل التصفية

يجري SearchFilter مطابقة نصية تقريبية عبر الحقول، بينما تطابق التصفية القيم المحددة تمامًا. ويُستخدم البحث للاستعلامات النصية الحرة.

تمكين حقول البحث

أضيفوا SearchFilter وسردوا الأعمدة التي يجب فحصها في search_fields. ثم يمرر العملاء مصطلح البحث باستخدام معلمة استعلام البحث.

from rest_framework.filters import SearchFilter

class BookViewSet(viewsets.ModelViewSet):
    filter_backends = [SearchFilter]
    search_fields = ['title', 'author__name']

ترتيب النتائج

أضيفوا OrderingFilter ليتمكن العملاء من الترتيب باستخدام ordering=title أو ordering=-price للترتيب التنازلي، وكل ذلك من عنوان URL.

تحقق سريع

تأكدوا من قدرتكم على التمييز بين هذه الأدوات.

مراجعة: استجابات API القابلة للاستخدام

يمكنكم الآن تقسيم القوائم باستخدام pagination، وتضييقها بالمرشحات، والعثور على النصوص بالبحث، وترتيبها باستخدام ordering. وستظل API سريعة وسهلة الاستخدام. 🎉

البدء مجانًا

تعلم Python مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
30
الدروس
120

الأسئلة الشائعة

هل درس «التصفية والبحث وتقسيم الصفحات» مجاني؟

نعم — نص درس «التصفية والبحث وتقسيم الصفحات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Django Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Django Academy 4 دروس في المجموع.

ماذا ستتعلم في «التصفية والبحث وتقسيم الصفحات»؟

جعل استجابات API الكبيرة سهلة الاستخدام تتمرن على Django Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Django Academy؟

لا تُشترط خبرة سابقة. Django Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «التصفية والبحث وتقسيم الصفحات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Django Academy هذا؟

نعم. كل درس في Django Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ModelViewSet وأجهزة التوجيه
  2. الأذونات وتحديد معدل الطلبات
  3. المصادقة باستخدام Token وJWT
  4. التصفية والبحث وتقسيم الصفحات
← العودة إلى Django Academy