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

السؤال

نشر

السلام عليكم،

أحتاج لمساعدة في مشكلة لم استطع حلها،

لقد كنت أعمل على مشروع django وهو عبارة عن موقع شخصي portfolio مع لوحة تحكم وعند اكمالي للمشروع كان يعمل بشكل ممتاز ولاكن عند رفعه على استضافة PythonAnywhere لم تظهر بعض الصور في الموقع وعندما توجهت الى لوحة التحكم ظهرت بدون تنسيقات فعدت الى المجلد الرئيسي للمشروع على جهازي وعندما اعدت تشغيله على الخادم المحلي ظهر الموقع بالكامل بدون اي تنسيقات css مع انه كان يعمل قبل رفعه دون اي مشاكل ومع اني لم اقم بأي تعديل عليه غير إضافة ملافات git و gitignore و requirment.txt

 

Screenshot_2025-02-26_095027_Vp1uOlC.png

Screenshot 2025-02-27 155614.png

django-portfolio.zip

Recommended Posts

  • 0
نشر

لو أضفت DEBUG = True في ملف الإعدادات فستظهر لك التنسيقات، حيث يتم تفعيل وضع التصحيح الذي يؤثر على عدة جوانب من المشروع، بما في ذلك طريقة تعامل Django مع الملفات الثابتة Static  وهي CSS، JavaScript، والصور. 

بمعنى لو كتبت DEBUG = True، يقوم Django بخدمة الملفات الثابتة تلقائيًا من المجلدات المحددة في STATICFILES_DIRS ومجلدات التطبيقات static/ داخل كل تطبيق.

أما وضع الإنتاج أو النشر سواء بتعيين DEBUG = False أو حذفها، يتوقف Django عن خدمة الملفات الثابتة تلقائيًا لأسباب أمنية وأدائية، ستحتاج إلى تثبيت whitenoise لخدمة الملفات الثابتة:

pip install whitenoise

ثم وضع التالي في قائمة MIDDLEWARE في ملف الإعدادات:

    'whitenoise.middleware.WhiteNoiseMiddleware',

ووضع التالي في قائمة INSTALLED_APPS:

    'whitenoise.runserver_nostatic',

ووضع المتغير التالي ملف الإعدادات أيضًا:

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

سيعمل معك المشروع بشكل سليم الآن.

  • 0
نشر

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

لاحظ أنك قمت بتعيين DEBUG = False في ملف settings.py ولذلك فإن Django يقوم بتغير طريقة التعامل مع الملفات الثابتة (Static Files) ومجلدات الوسائط (Media Files).

حيث عند تعيين DEBUG = False يتوقف Django عن خدمة الملفات الثابتة تلقائيا وهذا ما سبب تلك المشكلة لك.

ولحل ذلك يجب استخدام خادم ويب خارجي مثل Apache أو Nginx لخدمة الملفات الثابتة وهذه هي الطريقة الأفضل في الإضافة لديك.

ولكن يمكنك إستخدام مكتبة whitenoise . 

أولا يجب عليك تثبيتها من خلال الأمر التالي :

pip install whitenoise

بعد ذلك في ملف django_portfolio\settings.py يرجى وضع السطر التالي بداخل قائمة INSTALLED_APPS :

'whitenoise.runserver_nostatic',

ووضع السطر التالي بداخل قائمءة MIDDLEWARE :

'whitenoise.middleware.WhiteNoiseMiddleware',

بعد ذلك يجب عليك إضافة الأكواد التالية في الملف :

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
WHITENOISE_USE_FINDERS = True
WHITENOISE_AUTOREFRESH = True

ولقد قمت بإرفاق الملف لك.

settings.py

  • 0
نشر
بتاريخ 51 دقائق مضت قال محمد عاطف17:

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

لاحظ أنك قمت بتعيين DEBUG = False في ملف settings.py ولذلك فإن Django يقوم بتغير طريقة التعامل مع الملفات الثابتة (Static Files) ومجلدات الوسائط (Media Files).

حيث عند تعيين DEBUG = False يتوقف Django عن خدمة الملفات الثابتة تلقائيا وهذا ما سبب تلك المشكلة لك.

ولحل ذلك يجب استخدام خادم ويب خارجي مثل Apache أو Nginx لخدمة الملفات الثابتة وهذه هي الطريقة الأفضل في الإضافة لديك.

ولكن يمكنك إستخدام مكتبة whitenoise . 

أولا يجب عليك تثبيتها من خلال الأمر التالي :

pip install whitenoise

بعد ذلك في ملف django_portfolio\settings.py يرجى وضع السطر التالي بداخل قائمة INSTALLED_APPS :

'whitenoise.runserver_nostatic',

ووضع السطر التالي بداخل قائمءة MIDDLEWARE :

'whitenoise.middleware.WhiteNoiseMiddleware',

بعد ذلك يجب عليك إضافة الأكواد التالية في الملف :

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
WHITENOISE_USE_FINDERS = True
WHITENOISE_AUTOREFRESH = True

ولقد قمت بإرفاق الملف لك.

settings.py 3.7 kB · 0 تنزيلات

شكراً لك أخي،

لقد عادت التنسيقات ولاكن الصور مازالت لم تظهر

  • 0
نشر
بتاريخ 10 دقائق مضت قال ديب الحجار:

شكراً لك أخي،

لقد عادت التنسيقات ولاكن الصور مازالت لم تظهر

هذا لأنه يجب على الصور أن تكون بداخل مجلد static حتى يستطيع whitenoise خدمة الصور.

لذلك يجب عليك نقل مجلد الصور media بداخل مجلد static وفي ملف django_portfolio\settings.py يرجى إستبدال MEDIA_URL بالتالي :

MEDIA_URL = '/static/media/'

بعد ذلك في المصتفح يرجى الضغط على CTRL + F5 لحذف الملفات المؤقته.و ستظهر الصور معك .

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...