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

السؤال

نشر

أقوم بإنشاء تطبيق باستخدام جانغو Django . كان كل شيء على ما يرام حتى الآن، ولكن بدأت المشاكل في اللحظة التي أردت فيها عرض صفحاتي خطأ مخصصه (404.html و 500.html). لكن قراءت في توثيق جانغو Django أنه لا يمكن عرض صفحات خطأ مخصصة إلا إذا تم إيقاف وضع التطوير من خلال وضع DEBUG = False:

اقتباس

However, running with DEBUG set to False means you’ll never see errors generated by your site

بشكل عام ، بمجرد تعيين DEBUG = False ، سيتم تحميل جميع ملفات العرض views ، ولكن لن يتم تحميل أي محتوى مرتبط (مثل ملفات CSS ، JavaScript ، والصور ، إلخ)! ما سبب هذه المشكلة؟ هل هناك شيء آخر يجب ضبطه بخصوص الملفات الثابتة وإعدادات وضع التطوير debug؟

Recommended Posts

  • 1
نشر

مع إيقاف وضع التطوير Debug mode، لن يتعامل Django مع الملفات الثابتة بعد الآن، حيث يجب أن يتولى خادم الويب الخاص بالإنتاج (Apache أو Nginx) هذا الأمر، وذلك لكي يتم تحميل الملفات الثابتة Static Files بشكل أسرع، حيث يقوم خادم الويب بتحميل الملفات بشكل مباشر دون المرور على طبقة الكود الخاص بالموقع، مما يعني سرعة تحميل أسرع بشكل عام.

يمكنك حل المشكلة بشكل مؤقت أثناء التطوير من خلال تشغيل الخادم مع تمرير العلم insecure كالتالي:

manage.py runserver --insecure

باستخدام العلم insecure، فيجب أن تعلم أنه غير فعال بشكل كبير وربما غير آمن أيضًا. لأن هذا الأمر مخصص للتطوير المحلي فقط local development، ويجب عدم استخدامه مطلقًا في مرحلة الإطلاق Production، وهو متاح فقط إذا كان تطبيق الملفات الثابتة staticfiles موجود في قائمة INSTALLED_APPS الخاص بمشروعك (في ملف settings.py).

  • 0
نشر (معدل)

إضافة لماقدمه سامح أشرف يمكنك استخدام WhiteNoise حيث يسمح WhiteNoise لتطبيق الويب الخاص بك بخدمة الملفات الستاتيكية الخاصة به ، مما يجعله وحدة قائمة بذاتها يمكن نشرها في أي مكان دون الاعتماد على nginx أو Amazon S3 أو أي خدمة خارجية أخرى:

# أولاُ قم بتثبيتها
# pip install WhiteNoise==2.0.6
# :الخاص بك إلى wsgi.py  وقم بتغيير ملف
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
application = get_wsgi_application()
application = DjangoWhiteNoise(application)

لكن عموماً لاينصح باستخدام هذه الطريقة في حفظ الملفات الستاتيكية، إليك الطريقة التالية التي تتمثل بإضافة السطر التالي إلى urls.py:

from django.views.static import serve 

ثم:

#urlpatterns أضف العنوانين التاليين  في
url(r'^media/(?P<path>.*)$', serve,{'document_root': settings.MEDIA_ROOT}), 
url(r'^static/(?P<path>.*)$', serve,{'document_root': settings.STATIC_ROOT}), 
#DEBUG=FALSE قابلين للوصول عندما static و media الآن سيكون كل من ملفي 

 

تم التعديل في بواسطة Ali Haidar Ahmad

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...