Ecommerce Vente نشر 11 سبتمبر 2022 أرسل تقرير نشر 11 سبتمبر 2022 السلام عليكم ، أريد عمل pagination مخصص django ninja api 1 اقتباس
0 Ahmed Sadek Elamine Touahria نشر 11 سبتمبر 2022 أرسل تقرير نشر 11 سبتمبر 2022 تخصيص فئة ترقيم الصفحات او custom pagination لإنشاء فئة ترقيم صفحات مخصصة ، يجب ان يكون لديك ninja.pagination.PaginationBase وعمل override لفئات مخطط Input و Output ودالة paginate_queryset (self ، queryset ، request ، ** params): مخطط الإدخال (Input) هو class مخطط يصف المعلمات التي يجب تمريرها إلى الفاصل الزمني الخاص بك (على سبيل المثال ، رقم الصفحة أو قيم الحد / الإزاحة). يصف مخطط الإخراج مخططًا لإخراج الصفحة (على سبيل المثال العد / الصفحة التالية / العناصر / إلخ). يتم تمرير paginate_queryset إلى مجموعة الاستعلام الأولية ويجب أن يُرجع كائنًا قابلًا للتكرار يحتوي فقط على البيانات الموجودة في الصفحة المطلوبة. تقبل هذه الطريقة الوسيطات التالية: queryset: مجموعة استعلام (أو قابلة للتكرار) تُرجعها وظيفة api pagination : ترقيم الصفحات ** params: kwargs التي ستحتوي على جميع الوسائط التي تلقتها الوظيفة مثال: # نعمل استيراد للمكتبات والفئات from ninja.pagination import paginate, PaginationBase from ninja import Schema # فئة التخصيص class CustomPagination(PaginationBase): # نعمل تجاوز لفئة الإدخال class Input(Schema): skip: int class Output(Schema): items: List[Any] # `items` فئة افتراضية total: int per_page: int def paginate_queryset(self, queryset, pagination: Input, **params): skip = pagination.skip return { 'items': queryset[skip : skip + 5], 'total': queryset.count(), 'per_page': 5, } # وهنا نقطة النهاية الخاصة بك @api.get('/users', response=List[UserSchema]) # وهذا هو المزخرف الذي عملنا له تخصيص @paginate(CustomPagination) def list_users(request): return User.objects.all() اقتباس
0 Ayoub Souad نشر 11 سبتمبر 2022 أرسل تقرير نشر 11 سبتمبر 2022 غالبًا ما تكون هناك حالة تحتاج فيها إلى إضافة ترقيم الصفحات إلى جميع views التي تُرجع مجموعات querysets أو list. يمكنك استخدام فئة توجيه مضمنة (RouterPaginated) تقوم تلقائيًا بحقن ترقيم الصفحات لجميع العمليات التي حددت response=List[SomeSchema]: from ninja.pagination import RouterPaginated router = RouterPaginated() #انشاء الوظيفة التي تحقن الترقيم @router.get("/items", response=List[MySchema]) #تطبيق المزخرف على العمليات # التي حددت الاستجابة كقائمة def items(request): return MyModel.objects.all() #استخراج جمبيع الكائنات #نفس التطبيق على عملية أخرى @router.get("/other-items", response=List[OtherSchema]) def ohter_items(request): return OtherModel.objects.all() في هذا المثال ، سيتم تمكين ترقيم الصفحات في كلتا العمليتين. لتطبيق ترقيم الصفحات على مثيل api الرئيسي ، استخدم وسيطة default_router: api = NinjaAPI(default_router=RouterPaginated()) اقتباس
السؤال
Ecommerce Vente
السلام عليكم ، أريد عمل pagination مخصص django ninja api
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.