Почему я получаю абсолютные 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, но я использую все надлежащие обозначения unix для своих путей.

Это было полезно?

Решение 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 box, оно работает просто отлично.Я просто захожу в базу данных и редактирую пути там, когда провожу тестирование в своем окне Windows.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top