لماذا أحصل على عناوين URL مطلقة في Satchmo عندما أقوم بتحميل صور المنتج محليًا؟

StackOverflow https://stackoverflow.com/questions/732563

سؤال

أقوم ببعض التطوير المحلي باستخدام Django وSatchmo.عندما أقوم بتحميل صور المنتج محليًا عبر المسؤول، يظهر المسار إلى الصورة كمسار مطلق، مكتمل بحرف محرك الأقراص، بدلاً من المسار النسبي الصحيح.

والغريب أيضًا أن Satchmo يحفظ كلاً من الصورة الأصلية والصور المصغرة التي ينشئها بداخلي /media/ الدليل و /media/images/ الدليل، وهذا الأخير هو المكان الذي أنا فيه يريد لهم للذهاب.

إعدادات relavent هي كما يلي:

# path relative to the settings.py file
DIRNAME = os.path.abspath(os.path.dirname(__file__).decode('utf-8'))

MEDIA_ROOT = os.path.join(DIRNAME, 'media')
MEDIA_URL = 'http://localhost:8000/'
ADMIN_MEDIA_PREFIX = '/media/'

لقد قمت بفحص ملف local_settings.py ثلاث مرات ولم يكن هناك ذكر لكلمة "وسائط" في أي مكان فيه، لذلك أنا متأكد من عدم وجود تجاوزات للإعدادات.

إذا كان ذلك مفيدًا، فأنا أستخدم نظام التشغيل Windows، ولكنني أستخدم جميع رموز يونكس المناسبة لمساراتي.

هل كانت مفيدة؟

المحلول 2

تبين أن المشكلة هي مشكلة في اتجاهات الشرطة المائلة في ملف settings.py.

عادةً ما أقوم بإنشاء ملف relative_path() وظيفة في ملف settings.py الخاص بي حتى أتمكن بسهولة من ضبط:

MEDIA_ROOT = absolute_path('media')

لقد شجع إصدار Satchmo الذي كنت أستخدمه على استخدام إعداد DIRNAME بدلاً من ذلك:

DIRNAME = os.path.abspath(os.path.dirname(__file__).decode('utf-8')

كانت المشكلة أنه باستخدام هذه التقنية، تم تعيين MEDIA_ROOT الخاص بي على هذا النحو:

MEDIA_ROOT = os.path.join(DIRNAME, 'media')

ولكن هذا كان يستخدم الخطوط المائلة العكسية لنظام التشغيل Windows بدلاً من الخطوط المائلة الأمامية لنظام Unix.لقد قمت بحلها مع:

MEDIA_ROOT = os.path.join(DIRNAME, 'media').replace('\\', '/')

نصائح أخرى

هذا خطأ في Windows فقط.أقوم بتطوير تطبيق Satchmo على نظام التشغيل Windows وهو يقوم بذلك، ولكن عندما أقوم بنشره على جهاز Linux فإنه يعمل بشكل جيد.أنا فقط أذهب إلى قاعدة البيانات وأقوم بتحرير المسارات هناك عندما أقوم بالاختبار على جهاز Windows الخاص بي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top