Django FileField网址不是相对的

时间:2009-11-18 13:58:54

标签: django file django-models

我有类似的东西:

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”。这与docs中的内容相反。

  

所有这些都将存储在你的   database是文件的路径   (相对于MEDIA_ROOT)。

当我在模板中使用file.url时,我会得到类似的内容:

  

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

而不是我想要的:

  

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

我做错了什么?

1 个答案:

答案 0 :(得分:3)

我刚刚在我的一个项目中做了一个示例FileField,它似乎按照您的预期工作。这里有几件事要尝试。

尝试按以下方式进行设置。我知道他们说不用/结束你的MEDIA_URL是不好的,但我就是这样做的,我更喜欢它。您只需记住在模板中使用MEDIA_URL时使用斜杠:href =“{{MEDIA_URL}} / path / to / file”

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

如果这对任何事都没有帮助,请创建一个新的简化模型,其中没有自定义FileField,看看你是否仍然遇到同样的问题。