Django FileField URL не относительный - PullRequest
4 голосов
/ 18 ноября 2009

У меня есть что-то вроде:

MEDIA_ROOT = '/home/httpd/foo/media/'
MEDIA_URL = 'http://www.example.org/media/'

(...)

file = models.FileField(upload_to='test') 

Когда я создаю объект с этим полем на странице администратора, Django сохраняет в БД полный путь к файлу, например: "/home/httpd/foo/media/test/myfile.pdf". Это противоречит тому, что сказано в документах .

Все, что будет храниться в вашем база данных это путь к файлу (относительно MEDIA_ROOT).

Когда я использую файл.url в шаблоне, я получаю что-то вроде:

http://www.example.org/home/httpd/foo/media/test/myfile.pdf

вместо того, что я хотел бы:

http://www.example.org/media/test/myfile.pdf

Что я делаю не так?

1 Ответ

3 голосов
/ 18 ноября 2009

Я только что сделал пример FileField в одном из моих проектов, и он, похоже, работал так, как вы ожидаете. Вот пара вещей, которые можно попробовать.

Попробуйте выполнить настройки следующим образом. Я знаю, что они говорят, что плохо не заканчивать свой MEDIA_URL знаком /, но так я это делаю, и мне это нравится больше. Вам просто нужно помнить всякий раз, когда вы используете MEDIA_URL в шаблоне, чтобы следовать за ним с косой чертой: href = "{{MEDIA_URL}} / path / to / file"

MEDIA_ROOT = '/home/httpd/foo/media'
MEDIA_URL = '/media'

Если это ничего не поможет, создайте новую упрощенную модель с ничего не настроенным FileField и посмотрите, не возникает ли у вас такая же проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...