режим отладки django отправляет загруженные файлы в каталог «upload_to» в STATIC_ROOT

#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 не рекомендуется начинать с «/». Позже это вызовет у вас головную боль.