#django #debugging #static
#django #отладка #статический
Вопрос:
Просмотрел некоторые другие подобные ответы на тему переполнения стека, но соответствующего ответа найдено не было.
STATIC_ROOT = /home/www/proj_a/static
MEDIA_ROOT = /home/www/proj_a/media
STATIC_URL = /static/
MEDIA_URL = /media/
в каком-то классе в какой-то модели у нас установлен upload_to
pix = models.FileField(_('photo'), upload_to='upload', blank=True)
Я бы ожидал, что файл будет отправлен по адресу /media/upload/1.jpg
Однако он заканчивается в /static/upload/1.jpg
Это не соответствует моему пониманию документов по Django 1.3.
Я использую Django 1.3 в режиме отладки.
Я еще не использую Apache, я буду беспокоиться об этом позже, а пока я просто пытаюсь выяснить проблему с runserver в режиме отладки.
Спасибо
Ответ №1:
Вы можете установить пользовательский каталог хранилища, выполнив что-то вроде этого:
upload_dir = FileSystemStorage(location=UPLOAD_ROOT, base_url='/uploads')
pix = models.FileField(_('photo'), upload_to='/upload', blank=True, storage=upload_dir)
UPLOAD_ROOT определен в моем settings.py файл: /path/www/загрузить
Проверьте эти 2 страницы для получения более подробной информации:
http://abing.gotdns.com/posts/2009/django-file-upload-handling-examples/
http://docs.djangoproject.com/en/dev/howto/custom-file-storage/
Комментарии:
1. django славится своей СУХОСТЬЮ. Я бы предпочел не работать над чем-то, что django поддерживает из коробки. Я думаю, что источником путаницы является весь MEDIA_ROOT против STATIC_ROOT, и, я думаю, они были введены в 1.3. Или мне действительно нужно идти по маршруту, как указано выше?
2. upload_to не рекомендуется начинать с «/». Позже это вызовет у вас головную боль.