有两个部分可以完成这项工作。首先是 Django 配置。您已经提到过,实际上有两个设置 -MEDIA_URL
和MEDIA_ROOT
. 正如评论中已经指出的那样,MEDIA_ROOT
必须是绝对路径。例如:
MEDIA_ROOT = `/abs/path/to/project/media/`
第二部分实际上是提供文件。如果您在生产中,您永远不想通过 Django 提供静态或媒体文件,因此您应该配置 Apache 或 nginx 或您使用的任何服务器系统来提供文件而不是 Django。另一方面,如果您仍在开发应用程序,有一种简单的方法可以让 Django 提供媒体文件。这个想法是修改你的urls.py
并使用 Django 的静态文件服务器来提供媒体文件:
# urls.py
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = patterns('',
# other patterns
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
有关此方法的更多信息,请参阅 Django文档。
另外仅供参考,您可能不应该使用{{MEDIA_URL}}{{article.mainPhoto}}
来获取图像的 url。例如,如果您不再将文件系统存储用于静态文件并且将切换到不同的东西,例如 Amazon S3,这种方法就会失效。存储后端找出 url 总是一个好主意:
<img src="{{article.mainPhoto.url}}" />