جانغو هو إطار عمل ويب Python عالي المستوى يمكّن المطورين من إنشاء تطبيقات الويب بسهولة. فهو يوفر مجموعة أدوات قوية ومرنة لبناء واجهات برمجة التطبيقات الضرورية لتطبيقات الويب الحديثة. إحدى الطرق الأكثر شيوعًا لإنشاء واجهات برمجة التطبيقات باستخدام Django هي استخدام Django Rest Framework (DRF). في هذه المقالة، سوف نستكشف DRF بعمق ونكتشف سبب شعبيته الكبيرة بين المطورين.
ما هو إطار عمل جانغو Rest؟
Django Rest Framework عبارة عن مجموعة أدوات قوية ومرنة تتيح للمطورين إنشاء واجهات برمجة التطبيقات بسرعة وسهولة. إنه مبني على Django ويوفر الأدوات التي تجعل من السهل إجراء تسلسل وإلغاء تسلسل أنواع البيانات المعقدة، وإنشاء نقاط نهاية CRUD، والتعامل مع المصادقة والأذونات.
لماذا نستخدم Django Rest Framework؟
يقدم نظام DRF العديد من المزايا، بما في ذلك:
- سهولة التكامل مع جانغو.
- تسلسلات مرنة يمكنها التعامل مع أنواع البيانات المعقدة.
- عروض ومجموعات عرض قوية تجعل من السهل إنشاء نقاط نهاية CRUD.
- فئات المصادقة والأذونات المدمجة التي تسهل تأمين واجهة برمجة التطبيقات (API) الخاصة بك.
- سهولة الاختبار والتصحيح.
المتطلبات الأساسية لاستخدام Django Rest Framework
قبل البدء في DRF، من المهم أن يكون لديك فهم أساسي لـ Django وPython. يجب أن تكون أيضًا على دراية بواجهات برمجة تطبيقات RESTful وبروتوكولات HTTP.
الشروع في العمل مع إطار عمل Django Rest
تثبيت إطار عمل جانغو Rest
الخطوة الأولى لبدء استخدام DRF هي تثبيته. يمكنك القيام بذلك باستخدام pip، مدير حزم Python. ما عليك سوى تشغيل الأمر التالي:
pip install djangorestframework
إعداد مشروع Django Rest Framework
بمجرد تثبيت DRF، يمكنك إنشاء مشروع Django جديد وإضافة DRF إليه. لإنشاء مشروع جديد، قم بتشغيل الأمر التالي:
django-admin startproject myproject
لإضافة DRF إلى مشروعك، تحتاج إلى إضافته إلى إعداد INSTALLED_APPS في ملف settings.py الخاص بمشروعك:
INSTALLED_APPS = [
# ...
'rest_framework',
]
إنشاء تطبيق Django Rest Framework
بعد ذلك، يجب عليك إنشاء تطبيق جديد ضمن مشروع Django والذي يحتوي على عروض API والمتسلسلات. لإنشاء تطبيق جديد، قم بتشغيل الأمر التالي:
python manage.py startapp api
تشغيل خادم التطوير
لاختبار تطبيق DRF، يجب عليك تشغيل خادم تطوير Django. للقيام بذلك، قم بتشغيل الأمر التالي:
python manage.py runserver
التسلسلات
تسمح لك أدوات التسلسل في DRF بتحويل أنواع البيانات المعقدة، مثل مثيلات نموذج Django، إلى تنسيق JSON أو XML. كما أنها تسمح لك بالتحقق من صحة البيانات الواردة وإلغاء تسلسلها إلى أنواع بيانات معقدة.
تسلسل نماذج جانغو
لإجراء تسلسل لنموذج Django، يجب عليك إنشاء فئة مُسلسِلة تحدد الحقول التي تريد تضمينها في الإخراج المتسلسل. على سبيل المثال:
from rest_framework import serializers
from myapp.models import MyModel
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = ['field1', 'field2', 'field3']
تسلسل أنواع البيانات الأخرى
يمكن أيضًا استخدام تسلسلات DRF لإجراء تسلسل لأنواع البيانات الأخرى، مثل القوائم والقواميس. على سبيل المثال:
class MyListSerializer(serializers.ListSerializer):
child = serializers.CharField()
class MySerializer(serializers.Serializer):
my_list = MyListSerializer()
تخصيص التسلسلات
يمكن تخصيص مُسلسلات DRF بعدة طرق، مثل إضافة منطق التحقق المخصص أو الحقول المخصصة. على سبيل المثال:
class MySerializer(serializers.Serializer):
my_field = serializers.CharField()
def validate_my_field(self, value):
if value == 'invalid':
raise serializers.ValidationError("Invalid value")
return value
إلغاء تسلسل البيانات
تعمل عملية إلغاء التسلسل على تحويل البيانات من تنسيق مثل JSON أو XML إلى مثيل نموذج Django. يوفر Django Rest Framework عمليات إلغاء التسلسل للتعامل مع هذا التحويل تلقائيًا. بالإضافة إلى عمليات إلغاء التسلسل المضمنة، يمكنك أيضًا إنشاء عمليات إلغاء تسلسل مخصصة للتعامل مع البيانات الأكثر تعقيدًا.
العروض ومجموعات العرض
يتم استخدام العروض ومجموعات العرض لتحديد سلوك نقطة نهاية API. تحدد العروض كيفية تصرف نقطة النهاية لكل أسلوب HTTP، مثل GET وPOST وPUT وDELETE. تعد مجموعات العرض تجريدًا عالي المستوى يمكنه التعامل مع طرق HTTP المتعددة لنفس نقطة النهاية.
ما هي العروض ؟
تعد العروض مسؤولة عن معالجة طلبات HTTP وإرجاع استجابات HTTP. في Django Rest Framework، يمكن أن تكون العروض إما مستندة إلى الدوال أو مبنية على الفئة. العروض المستندة إلى الدوال هي دوال Python البسيطة التي تأخذ طلب HTTP كوسيطة وترجع استجابة HTTP. و تعد العروض المستندة إلى الفئة أكثر مرونة ويمكنها التعامل مع المنطق الأكثر تعقيدًا.
أنواع العروض views في جانغو
ما هي مجموعات العرض؟
تعد مجموعات العرض تجريدًا عالي المستوى من العروض التي تسمح لك بتعريف مجموعة من العروض ذات الصلة لنموذج أو كائن واحد. تتعامل مجموعات العرض مع طرق HTTP متعددة لنفس نقطة النهاية، مثل GET وPOST وPUT وDELETE. يمكن أيضًا تصنيف مجموعات العرض بشكل فرعي لتوفير دوال إضافية.
العروض المستندة إلى الفئة مقابل العروض المستندة إلى الدوال
تعتبر العروض المستندة إلى الفئة طريقة أكثر قوة ومرونة لتعريف العروض. حيث توفر العديد من الدوال خارج الصندوق، مثل ترقيم الصفحات، والتصفية، والمصادقة. بينما تعد العروض المستندة إلى الدوال أبسط وأسهل في الفهم، ولكنها قد تصبح غير قابلة للإدارة بسرعة مع تزايد تعقيد واجهة برمجة التطبيقات (API).
إنشاء نقاط نهاية CRUD مع العروض
يوفر Django Rest Framework العديد من العروض العامة التي يمكن استخدامها لإنشاء نقاط نهاية CRUD (إنشاء، قراءة، تحديث، حذف) لنموذج Django. توفر العروض هذه الكثير من الدوال المبتكرة، مثل ترقيم الصفحات، والتصفية، والفرز.
إنشاء نقاط نهاية CRUD باستخدام مجموعات العرض
توفر مجموعات العرض تجريدًا بمستوى أعلى من العروض، مما يسمح لك بتعريف مجموعة من العروض ذات الصلة لنموذج أو كائن واحد. يمكن لمجموعات العرض التعامل مع طرق HTTP متعددة لنفس نقطة النهاية، مثل GET وPOST وPUT وDELETE. إنها طريقة رائعة لإنشاء نقاط نهاية CRUD لنموذج Django بسرعة.
مصادقة API والأذونات
المصادقة والأذونات مفهومان مهمان في تطوير واجهة برمجة التطبيقات (API). تشير المصادقة إلى عملية التحقق من هوية المستخدم أو العميل. و تشير الأذونات إلى تحديد ما إذا كان المستخدم أو العميل لديه الأذونات اللازمة للوصول إلى مورد معين.
خيارات المصادقة المضمنة
يوفر Django Rest Framework العديد من خيارات المصادقة المضمنة، مثل TokenAuthentication وSessionAuthentication وBasicAuthentication. يمكن إضافة خيارات المصادقة هذه بسهولة إلى أي عرض أو مجموعة عرض.
خيارات المصادقة المخصصة
بالإضافة إلى خيارات المصادقة المضمنة، يتيح لك Django Rest Framework أيضًا إنشاء خيارات مصادقة مخصصة. يمكن استخدام خيارات المصادقة المخصصة للتكامل مع خدمات مصادقة الجهات الخارجية أو لتوفير آليات مصادقة أكثر تقدمًا.
خيارات الأذونات المضمنة
يوفر Django Rest Framework العديد من خيارات الأذونات المضمنة، مثل IsAuthenticated وIsAdminUser وAllowAny. يمكن إضافة خيارات الأذونات هذه بسهولة إلى أي عرض أو مجموعة عرض.
خيارات الأذونات المخصصة
بالإضافة إلى خيارات الأذونات المضمنة، يتيح لك Django Rest Framework أيضًا إنشاء خيارات أذونات مخصصة. يمكن استخدام خيارات الأذونات المخصصة لتوفير المزيد من التحكم الدقيق في الوصول أو للتكامل مع أنظمة ترخيص الطرف الثالث.
العمل مع العلاقات
في كثير من الحالات، يجب أن تقوم نقاط نهاية API بإرجاع البيانات ذات الصلة مع البيانات الأساسية. يوفر Django Rest Framework عدة خيارات للعمل مع العلاقات والبيانات ذات الصلة.
تسلسل البيانات ذات الصلة
يتيح لك تسلسل البيانات ذات الصلة تضمين بيانات من النماذج ذات الصلة في استجابتك. وهذا مفيد عند استرداد البيانات من جداول متعددة في طلب واحد. يوفر Django Rest Framework عدة خيارات لتسلسل البيانات ذات الصلة.
أحد الخيارات هو استخدام سمة depth
في برنامج التسلسل. تحدد سمة اdepth
عدد المستويات العميقة التي يجب على جهاز التسلسل اجتيازها عند إجراء تسلسل للبيانات ذات الصلة. على سبيل المثال، إذا كان لديك نموذج Book
له علاقة مفتاح خارجي مع نموذج Publisher
، فيمكنك تعيين سمة depth
إلى 1 في BookSerializer
لتضمين معلومات الناشر في الاستجابة.
إنشاء مسلسلات متداخلة
هناك خيار آخر لتسلسل البيانات ذات الصلة وهو استخدام أدوات التسلسل المتداخلة. تسمح لك المُسلسلات المتداخلة بتضمين البيانات ذات الصلة ككائنات متداخلة داخل الكائن الرئيسي. يوفر هذا استجابة أكثر تنظيمًا ويسمح لك بالتحكم في الحقول التي يتم إرجاعها للبيانات ذات الصلة.
على سبيل المثال، إذا كان لديك نموذج Book
يحتوي على علاقة مفتاح خارجي مع نموذج Author
، فيمكنك إنشاء AuthorSerializer
وتضمينه كحقل في BookSerializer
. سيؤدي هذا إلى إجراء تسلسل لمعلومات المؤلف ككائن متداخل ضمن معلومات الكتاب في الرد.
تصفية البيانات ذات الصلة
عند العمل مع البيانات ذات الصلة، قد تحتاج أيضًا إلى تصفية البيانات ذات الصلة بناءً على معايير معينة. يوفر Django Rest Framework عدة خيارات لتصفية البيانات ذات الصلة.
أحد الخيارات هو استخدام سمة related_name
في حقل النموذج. يتيح لك هذا تحديد اسم مخصص للحقل ذي الصلة الذي يمكن استخدامه للتصفية.
هناك خيار آخر وهو استخدام ExternalKey أو ManyToManyField manager لتصفية البيانات ذات الصلة. على سبيل المثال، لنفترض أن لديك نموذج كتاب له علاقة many-to-many مع نموذج الفئة. في هذه الحالة، يمكنك استخدام عامل التصفية Categories__name
لاسترداد جميع الكتب المرتبطة بفئة معينة.
ترقيم الصفحات مع البيانات ذات الصلة
عند العمل مع كميات كبيرة من البيانات ذات الصلة، قد يكون من الضروري ترقيم الاستجابة. يوفر Django Rest Framework فئات ترقيم الصفحات التي يمكن استخدامها لترقيم البيانات ذات الصلة.
لترقيم البيانات ذات الصلة، حدد فئة ترقيم الصفحات في العرض أو مجموعة العرض التي تسترد البيانات ذات الصلة. على سبيل المثال، إذا كان لديك نموذج Book
يحتوي على علاقة مفتاح خارجي مع نموذج Publisher
، فيمكنك تحديد فئة ترقيم الصفحات في PublisherViewSet
لترقيم الصفحات المرتبطة بالناشر.
العمل مع الطلبات والاستجابات
يوفر Django Rest Framework عدة خيارات لمعالجة الطلبات والاستجابات في عرض API الخاص بك.
كائن الطلب
يحتوي كائن الطلب على معلومات حول الطلب الوارد. يتضمن ذلك طريقة الطلب والرؤوس والنص ومعلمات الاستعلام.
كائن الاستجابة
يحتوي كائن الاستجابة على معلومات حول الاستجابة الصادرة. يتضمن ذلك معلومات حول رمز حالة الاستجابة والرؤوس والنص الأساسي.
استخدام رموز الحالة
تُستخدم رموز حالة HTTP للإشارة إلى حالة الاستجابة. يوفر Django Rest Framework ثوابت لجميع رموز حالة HTTP، مما يجعل من السهل إرجاع رمز الحالة المناسب في عرض API الخاص بك.
استخدام الرؤوس
تُستخدم رؤوس HTTP لتوفير معلومات إضافية حول الطلب أو الاستجابة. يوفر Django Rest Framework عدة خيارات للعمل مع الرؤوس في عرض API الخاص بك.
أخطاء العودة
عند حدوث خطأ في عرض واجهة برمجة التطبيقات (API) الخاص بك، فمن المهم إرجاع الاستجابة المناسبة للخطأ. يوفر Django Rest Framework عدة خيارات لإرجاع استجابات الأخطاء، بما في ذلك استخدام فئة APIException
المضمنة أو إنشاء فئات استثناءات مخصصة.
اختبار إطار عمل جانغو Rest
يعد الاختبار جزءًا مهمًا من بناء واجهة برمجة تطبيقات قوية وموثوقة. يوفر Django Rest Framework العديد من الخيارات لاختبار واجهة برمجة التطبيقات (API) الخاص بك، بما في ذلك استخدام الاختبار المدمج.
أفضل الممارسات والاستراتيجيات لاختبار تطبيقات جانغو
الإطار في جانغو
يمكن أن تساعد اختبارات الكتابة لتطبيقات Django Rest Framework في اكتشاف الأخطاء المحتملة والتأكد من دوال واجهة برمجة التطبيقات لديك كما هو متوقع. يمكن للاختبارات أيضًا توثيق واجهة برمجة التطبيقات الخاصة بك، وإظهار المطورين الآخرين كيف يجب أن تتصرف نقاط نهاية واجهة برمجة التطبيقات.
لكتابة اختبارات لتطبيق Django Rest Framework، يمكنك استخدام إطار عمل الاختبار المدمج في Django، والذي يتضمن فئات الاختبار والأساليب التي يمكن استخدامها لاختبار العرض والمتسلسلات والمزيد.
يعد إجراء الاختبارات لتطبيقات Django Rest Framework أمرًا بسيطًا أيضًا. يمكنك استخدام مشغل اختبار Django القياسي لتشغيل اختباراتك، ويوفر Django Rest Framework فئات اختبار إضافية وطرق مساعدة لاختبار نقاط نهاية API.
عند اختبار واجهة برمجة التطبيقات، من المهم اختبار حالات الحافة والسلوك غير المتوقع. يمكن أن يتضمن ذلك اختبار بيانات الإدخال غير الصالحة، واختبار الأخطاء والاستثناءات، واختبار السلوك غير المتوقع في برامج التسلسل و العرض.
من خلال اختبار واجهة برمجة التطبيقات بشكل شامل، يمكنك التأكد من أنها موثوقة وقوية وتلبي احتياجات المستخدمين.
نشر تطبيقات Django Rest Framework
بمجرد إنشاء تطبيق Django Rest Framework واختباره بدقة، ستحتاج إلى نشره في بيئة إنتاج حتى يتمكن المستخدمون من استخدامه.
يمكن أن تكون إعدادات الإنتاج معقدة، وهناك العديد من العوامل التي يجب مراعاتها، بما في ذلك الأمان والأداء وقابلية التوسع.
عند نشر تطبيق Django Rest Framework، تتضمن بعض الاعتبارات المهمة مثل إعداد قاعدة بيانات، وجمع الملفات الثابتة، وخدمة الملفات الثابتة، وتكوين إعدادات الإنتاج مثل تحسينات الأمان والأداء.
قد تحتاج أيضًا إلى التفكير في نشر تطبيقك على موفر استضافة، مثل Heroku أو AWS، والذي يمكن أن يوفر ميزات إضافية لقابلية التوسع والموثوقية.
نشر مواقع جانغو على منصة Fly.io
كيفية نشر تطبيق Django على Render
في هذه المقالة، قمنا بتغطية أساسيات Django Rest Framework، وهو إطار عمل قوي ومرن لبناء واجهات برمجة التطبيقات في Django.
لقد ناقشنا فوائد استخدام Django Rest Framework ومتطلباته الأساسية وكيفية البدء في إنشاء واجهة برمجة التطبيقات (API) الخاصة بك باستخدام Django Rest Framework.
لقد قمنا أيضًا بتغطية الميزات الرئيسية لـ Django Rest Framework، بما في ذلك المتسلسلات و العروض ومجموعات العرض والمصادقة والأذونات والعمل مع العلاقات واختبار واجهة برمجة التطبيقات (API) الخاصة بك ونشرها.
باتباع الخطوات وأفضل الممارسات الموضحة في هذه المقالة، يمكنك إنشاء واجهة برمجة تطبيقات قوية وموثوقة باستخدام Django Rest Framework الذي يلبي احتياجات المستخدمين ومؤسستك.
اكتشاف المزيد من بايثون العربي
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.