Amer Abdallah نشر 18 سبتمبر 2021 أرسل تقرير نشر 18 سبتمبر 2021 حاولت أن أقوم بإرجاع رد response عبارة عن خطأ Forbidden من خلال الكود التالي: raise HttpResponseForbidden() ولكن ظهر لي الخطأ التالي: exceptions must be old-style classes or derived from BaseException, not HttpResponseForbidden كيف أقوم بإرجاع خطأ Forbidden في جانغو Django؟ 3 اقتباس
1 سامح أشرف نشر 18 سبتمبر 2021 أرسل تقرير نشر 18 سبتمبر 2021 يمكنك إعادة رد بكود 403 في جانغو من خلال الكود التالي: from django.core.exceptions import PermissionDenied def my_view(request, ...): if not request.user.is_admin: raise PermissionDenied بالطبع يمكنك تغير الشرط في الكود السابق كما تريد. على عكس الخطأ HttpResponseForbidden، يؤدي إعادة PermissionDenied إلى عرض رسالة الخطأ باستخدام القالب 403.html ، أو يمكنك استخدام middleware لإظهار ملف عرض مخصصة. كما يمكنك عرض رسالة خطأ مخصصة، على النحو التالي: from django.core.exceptions import PermissionDenied def my_view(request, ...): if not request.user.is_admin: raise PermissionDenied("You do not have permission to visit this page") 3 اقتباس
0 محمد أبو عواد نشر 18 سبتمبر 2021 أرسل تقرير نشر 18 سبتمبر 2021 قم بإرجاعه كما تفعل مع أي رد آخر كالتالي from django.http import HttpResponseForbidden return HttpResponseForbidden() 1 اقتباس
0 Ali Haidar Ahmad نشر 18 سبتمبر 2021 أرسل تقرير نشر 18 سبتمبر 2021 (معدل) يمكنك بشكل اختياري توفير نموذج مخصص باسم "403.html" للتحكم في عرض أخطاء HTTP 403. أيضاً يجب أن تعلم أنه لا يمكن استخدام النموذج 403 إلا إذا قمت برفع PermissionDenied. يعرض الكود التالي نموذج عرض مستخدم لاختبار القوالب المخصصة "403.html" و "404.html" و "500.html": def index(request): h = """ <!DOCTYPE html> <html lang="en"> <body> <ul> <li><a href="/">home</a></li> <li><a href="?action=raise403">Raise Error 403</a></li> <li><a href="?action=raise404">Raise Error 404</a></li> <li><a href="?action=raise500">Raise Error 500</a></li> </ul> </body> </html> """ event = request.GET.get('action', '') from django.http import Http404 if event == 'raise404': raise Http404 from django.core.exceptions import PermissionDenied as PD if event == 'raise403': raise PD if event == 'raise500': raise Exception('Server error') return HttpResponse(h) أيضاً يجب تعيين DEBUG = False في settings المشروع أو سيعرض لك إطار العمل traceback بدلاً من ذلك لـ 404 و 500. تم التعديل في 18 سبتمبر 2021 بواسطة Ali Haidar Ahmad 1 اقتباس
السؤال
Amer Abdallah
حاولت أن أقوم بإرجاع رد response عبارة عن خطأ Forbidden من خلال الكود التالي:
ولكن ظهر لي الخطأ التالي:
كيف أقوم بإرجاع خطأ Forbidden في جانغو Django؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.