اذهب إلى المحتوى

السؤال

نشر

السلام عليكم ورحمة الله وبركاته

في جانغو اريد الوصول الي الid الذي امرره في ملف الurls

بمعني اني كتبت هذه الurl في ملف urls.py

urlpatterns = [
    path('<int:id>/', views.ArticleListView.as_view(), name='article_view'),
]

وامرر هذا الid من خلال الtemplates

واريد الوصول لهذا المتغير في الclass based view؟؟

Recommended Posts

  • 0
نشر

يمكنك الوصول إلى المتغير id الذي تم تمريره في ملف الـ urls.py في الـ class-based view باستخدام طريقة kwargs.

في الـ class-based view، يمكنك استخدام طريقة kwargs للحصول على قيمة المتغير id. على سبيل المثال، إذا كان لديك طريقة get() في الـ class-based view، يمكنك الوصول إلى قيمة المتغير id باستخدام الكود التالي:

def get(self, request, **kwargs):
    # access the id variable
    id = kwargs['id']
    # do something with the id variable

مثال على ذلك في الـ View:

from django.views.generic import ListView

class ArticleListView(ListView):

  def get(self, request, *args, **kwargs):
    article_id = kwargs['id']
    
    # Now you can use the article_id variable
    return super().get(request, *args, **kwargs)

الخطوات:

  • تستقبل الدالة get كمعامل kwargs والذي يحتوي على جميع المتغيرات الممررة من urls.
  • تستطيع الوصول إلى متغير id عبر kwargs['id'].
  •  الآن بإمكانك استخدام متغير article_id داخل الـView.
  • 0
نشر

عند كتابة kwargs['id'] لا يتعرف عليها 

وقبل ان اطرح السؤال قمت بالحث فوجدت انه يمكن الوصول اليها عن طريق

self.kwargs['id']

ولكن عند استخدامها يظهر هذا الخطأ

KeyError at /blog/

'id'

بتاريخ 11 دقائق مضت قال عبدالباسط ابراهيم:

يمكنك الوصول إلى المتغير id الذي تم تمريره في ملف الـ urls.py في الـ class-based view باستخدام طريقة kwargs.

في الـ class-based view، يمكنك استخدام طريقة kwargs للحصول على قيمة المتغير id. على سبيل المثال، إذا كان لديك طريقة get() في الـ class-based view، يمكنك الوصول إلى قيمة المتغير id باستخدام الكود التالي:

def get(self, request, **kwargs):
    # access the id variable
    id = kwargs['id']
    # do something with the id variable

مثال على ذلك في الـ View:

from django.views.generic import ListView

class ArticleListView(ListView):

  def get(self, request, *args, **kwargs):
    article_id = kwargs['id']
    
    # Now you can use the article_id variable
    return super().get(request, *args, **kwargs)

الخطوات:

  • تستقبل الدالة get كمعامل kwargs والذي يحتوي على جميع المتغيرات الممررة من urls.
  • تستطيع الوصول إلى متغير id عبر kwargs['id'].
  •  الآن بإمكانك استخدام متغير article_id داخل الـView.

 

  • 0
نشر
بتاريخ منذ ساعة مضت قال Hamza Waleed2:

عند كتابة kwargs['id'] لا يتعرف عليها 

وقبل ان اطرح السؤال قمت بالحث فوجدت انه يمكن الوصول اليها عن طريق

self.kwargs['id']

ولكن عند استخدامها يظهر هذا الخطأ

KeyError at /blog/

'id'

يُرجى توضيح الشيفرات التي تكتبها في صنف ال View الذي يقوم بمعالجة الطلب، حتى نستطيع معرفة سبب المشكلة

  • 0
نشر

يمكنك الوصول إلى متغيرات URL في Django باستخدام الطريقة get_queryset() في طريقة العرض.

class ArticleListView(generics.ListView):
    queryset = Article.objects.all()

    def get_queryset(self):
        queryset = super().get_queryset()
        id = self.kwargs['id']
        queryset = queryset.filter(id=id)
        return queryset

سيؤدي ذلك  إلى تصفية مجموعة الاستعلام لتشمل فقط المقالة ذات معرف id.

أيضًا تستطيع الوصول إلى متغيرات URL مباشرةً من طريقة العرض الخاصة بك باستخدام الطريقة kwargs().

class ArticleListView(generics.ListView):
    queryset = Article.objects.all()

    def get_queryset(self):
        id = self.kwargs['id']
        return Article.objects.filter(id=id)

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...