Mohssen A Mohssen نشر 22 يناير 2022 أرسل تقرير نشر 22 يناير 2022 لا يمكنني إنشاء صفحة خطأ 500 أو 404 مخصصة. إذا قمت بكتابة عنوان url غير صحيح، يتم إعادة صفحة الخطأ الافتراضية. في ملف settings.py قمت بكتابة الإعدادات التالية: DEBUG = False TEMPLATE_DEBUG = DEBUG #.... TEMPLATE_DIRS = ( 'C:/Users/Mohssen/Django/mysite/templates', ) وفي ملف mysite/polls/urls.py لدي المسارات التالية: from django.conf.urls import patterns, url from polls import views urlpatterns = patterns('', url(r'^$', views.index, name='index'), url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail') ) ما الذي يجب تغييره للحصول على صفحة خطأ 404 مخصصة إذا استخدمت عنوان url خاطيء؟ هل هناك أي شيء يجب أن أتحقق منه ويمنع ظهور صفحة خطأ مخصصة؟ اقتباس
1 Mohamed Abu Abdo نشر 23 يناير 2022 أرسل تقرير نشر 23 يناير 2022 (معدل) أجل يمكنك إضافة صفحات لعناوين url المجهولة والغير متاحة في مشروعك ,أو أي خطأ. تابع التالي أولا في ملف settings.py يجب إلغاء وضع التصحيح أو التطوير {Debugging}, من خلال تمرير False إلى DEBUG بدلا من True DEBUG = False ALLOWED_HOSTS = ['*'] # Application definition ثانيا يجب إنشاء ملفين html للأخطاء 404 و 500 في مجلد templates سنفترض أن أسمائهما كما يلى: 404.html 500.html لك كامل الحرية في محتوى تلك الصفحات ولكن إليك مثال بسيط لصفحة 404: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>CodePen - 404 Concept Page @property</title> </head> <body> <h1>404</h1> <div class="info"> <h1>Error: {{status}} </h1> <h2>We can't find that page</h2> <a href="/app" target="_blank">Go To Home</a> <!-->اذهب إلى الصفحة الرئيسية </--> </div> </body> </html> ثالثا إضافة دالتين إلي ملف views.py from django.shortcuts import render # Create your views here. def index(request): """دالة الصفحة الرئيسية """ return render(request, 'index.html') def error_404(request, exception): """دالة يتم تنفيذها في حال وجود خطأ404""" return render(request,'404.html', status=404) def error_500(request, *args, **argv): """نفس الدالة السابقة ولكن يتم تنفيذها في حال وجود خطأ يشير إلى الكود500""" return render(request, '500.html', status=500) #تأكد من كتابة اسم الملف أو القالب بشكل صحيح أخيرا ستقوم بإستدعاء هاتين الدالتين بداخل ملف urls.py الخاص بمشروعك ,أو تطبيقك ولكنه في كل الأحوال سيعمل. اقتباس تذكير: يوجد ملف urls.py في المشروع الرئيسي بجوار ملفات settings.py و wsgi.py وهناك ملف urls.py أخر أو أكثر يتم إنشائه عادة في التطبيقات الفرعية أو ال Apps الموجودة داخل Django. يمكنك اضافة الجزء التالي إلى واحد من تلك الملفات وإن كنت أرجح كتابته في urls.py الرئيسي, وهذا ما قمت به في المثال أدناه. فيما يلي التعديل المطلوب في ملف urls.py from django.contrib import admin from django.urls import path from django.conf.urls import include, handler404 ,handler500 #إستدعاء لدوال مهم from myapp import views #استدعاء الفيو التي بداخلها الدوال التي أنشأنها urlpatterns = [ path('admin/', admin.site.urls), path('app/', include('myapp.urls')), ] #السطور المهمة handler404 = views.error_404 #يتم اسناد قيم الخطأ إلي الدالة 404 handler500 = views.error_500 #نفس الأمر ولكن لدالة 500 يمكن تجربة تخصيص صفحتي 404 و 500 بطرق مختلفة لكن هذه ربما الأقل تعقيداً, ومن المهم جداً أن تتذكر بأن صفحاتك المخصصة لن تظهر ومشروعك في وضع DEBUG يجب عليك تعطيله هكذا DEBUG = False من ملف الإعدادات كما وضحنا في البداية, وقد يطلب منك إعداد العناوين المسموح لها بزيارة موقعك ALLOWED_HOSTS , على أي حال قم بضبطها إلى ALLOWED_HOSTS = ['*'] النتائج ستكون كما يلي, بالتوفيق. تم التعديل في 23 يناير 2022 بواسطة Mohammed_Emad تعديل كود views.py 1 اقتباس
السؤال
Mohssen A Mohssen
لا يمكنني إنشاء صفحة خطأ 500 أو 404 مخصصة. إذا قمت بكتابة عنوان url غير صحيح، يتم إعادة صفحة الخطأ الافتراضية.
في ملف settings.py قمت بكتابة الإعدادات التالية:
وفي ملف mysite/polls/urls.py لدي المسارات التالية:
ما الذي يجب تغييره للحصول على صفحة خطأ 404 مخصصة إذا استخدمت عنوان url خاطيء؟
هل هناك أي شيء يجب أن أتحقق منه ويمنع ظهور صفحة خطأ مخصصة؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.