Mohssen A Mohssen نشر 6 فبراير 2022 أرسل تقرير نشر 6 فبراير 2022 طوال الوقت في جانغو Django، أرى أنه يتم إستخدام الصنف DoesNotExist في حالة عدم وجود نتائج، ولكن في بعض الأحيان قد يتم إستخدام الصنف ObjectDoesNotExist الموجود في django.core.exceptions بدلًا منه. متى أستخدام الصنف ObjectDoesNotExist بدلًا DoesNotExist؟ ومتى أقوم بالعكس؟ 1 اقتباس
1 مسعود زاهي نشر 6 فبراير 2022 أرسل تقرير نشر 6 فبراير 2022 DoesNotExist و ObjectDoesNotExist هما عبارة عن أخطاء (exceptions) في جانغو تحدث عندما نريد جلب كائن من قاعدة البيانات لكن هذا الكائن غير متوفر إما لأنه حُذف أو لأن المُعرف الذي استخدمناه كان خاطئاً. في فرق بسيط بينهما وهو أن ObjectDoesNotExist عامة و DoesNotExist خاصة. لفهم هذا نقوم بالمثال التالي: from django.contrib.auth.models import User from django.core.exceptions import ObjectDoesNotExist from myproject.apps.teams.models import Team try: user = User.objects.get(pk=1337) team = Team.objects.get(pk=23) except ObjectDoesNotExist: logging.error("المستخدم أو الفريق لا يوجد") في المثال السابق قُمنا بجلب كائن من النموذج User باستخدام المعرف 1337، و كائن من النموذج Team باستخدام المعرف 23. لو صودف أن أحد الكائنين غير متوفر سيحدث الخطأ ObjectDoesNotExist. لو أردنا أن نَفْصِل بين الخطأين مثلاً: عندما لا نجد المستخدم نسجل "المستخدم لا يوجد" وعندما لا نجد الفريق نكتب " الفريق لا يوجد" هنا لا نستطيع فعل ذلك باستخدام ObjectDoesNotExist فنستعمل DoesNotExist. from django.contrib.auth.models import User from myproject.apps.teams.models import Team try: user = User.objects.get(pk=1337) team = Team.objects.get(pk=23) except User.DoesNotExist: logging.error("المستخدم غير موجود") except Team.DoesNotExist: logging.error("الفريق غير موجود") 1 اقتباس
السؤال
Mohssen A Mohssen
طوال الوقت في جانغو Django، أرى أنه يتم إستخدام الصنف DoesNotExist في حالة عدم وجود نتائج، ولكن في بعض الأحيان قد يتم إستخدام الصنف ObjectDoesNotExist الموجود في django.core.exceptions بدلًا منه.
متى أستخدام الصنف ObjectDoesNotExist بدلًا DoesNotExist؟ ومتى أقوم بالعكس؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.