البرمجة

تكامل Django Messages مع Django Rest Framework

في سياق استخدام إطار العمل Django و Django Rest Framework، يطرأ أحيانًا التحدي عند محاولة استخدام Django Messages Framework لعرض رسائل بعد أداء عملية معينة، مثل إضافة سجل جديد باستخدام ModelViewSet في Django Rest Framework.

في الكود الذي قدمته، قمت بمحاولة استخدام messages.success لعرض رسالة نجاح بعد إضافة نطاق جديد، ولكن واجهت خطأ من نوع TypeError يشير إلى أن الوسيطة التي يتم تمريرها لدالة add_message() يجب أن تكون من نوع HttpRequest، وليس Request.

لحل هذا التحدي، يمكنك تعديل الكود بطريقة تمكنك من الوصول إلى HttpRequest داخل create() في ModelViewSet. يمكنك استخدام الخاصية request المتاحة داخل Request في Django Rest Framework للوصول إلى HttpRequest. فيما يلي كود محدث يوضح كيفية القيام بذلك:

python
from rest_framework.response import Response from rest_framework import status from rest_framework.decorators import action from django.contrib import messages from django.http import HttpResponseRedirect from django.urls import reverse class DomainModelViewSet(ModelViewSet): @action(detail=False, methods=['post']) def create_and_add_message(self, request): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) self.perform_create(serializer) # استخدام HttpRequest من Django Rest Framework Request django_request = self.request._request messages.success(django_request, "Domain Added.") return Response(serializer.data, status=status.HTTP_201_CREATED)

في هذا الكود، تم استخدام الديكورات (@action) لإضافة إجراء إضافي يسمى create_and_add_message، الذي يقوم بإجراء إضافة النطاق وإرسال رسالة نجاح. يتم استخدام self.request._request للوصول إلى HttpRequest من داخل Request في Django Rest Framework.

بهذا الشكل، يمكنك تحقيق التكامل بين Django Messages Framework و Django Rest Framework بنجاح بعد إجراء الإضافات أو التعديلات اللازمة في الكود.

المزيد من المعلومات

في هذا السياق، يجدر بنا التعمق أكثر في المفاهيم والتقنيات التي تم استخدامها في الكود السابق. لنفهم بشكل أوسع كيف تم حل التحدي وكيف يمكن تحسينه أكثر.

أولًا وقبل كل شيء، يتعلق الكود بالتعامل مع Django و Django Rest Framework، وهما إطاري عمل قويين يسهلان تطوير تطبيقات الويب باستخدام لغة Python. Django Rest Framework يعمل كامتداد لـ Django ويوفر أدوات لبناء واجهات برمجة تطبيقات (API) بشكل فعال.

في الكود، تم استخدام ModelViewSet وهي إحدى الفئات المقدمة من Django Rest Framework لتسهيل إنشاء نهج RESTful CRUD (Create, Retrieve, Update, Delete) لنماذج Django. تمت معالجة الطلبات باستخدام الوظيفة create() التي تستخدم لإنشاء مورد جديد.

تم توسيع هذا بواسطة إضافة إجراء خاص باستخدام الديكورات (@action). الإجراء يقوم بالإضافة إلى النطاق باستخدام المعلومات المرسلة في الطلب، ثم يقوم بإرسال رسالة نجاح باستخدام Django Messages Framework.

الخطوة المهمة هي الحصول على HttpRequest من Django Rest Framework Request. هنا تم استخدام self.request._request للوصول إلى الكائن HttpRequest المطلوب لاستخدام messages.success() بشكل صحيح.

عمومًا، يمكن أيضًا استخدام هذا النمط لتحقيق التكامل بين Django و Django Rest Framework في سياقات أخرى. يجسد هذا الحل إحدى الطرق الفعّالة للتعامل مع النقاط التكاملية بين مكتبات Django المختلفة بطريقة تجعل الكود أكثر وضوحًا وإدارةً.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!