我在设置Django中的URL时遇到了问题。
要提供我的媒体文件,我有这个Amazon S3存储桶:
https://somebucket.s3.amazonaws.com/
我将媒体网址设置在settings.py
内,如下所示:
MEDIA_URL = https://somebucket.s3.amazonaws.com/media/
在urls.py
内,我按如下方式设置代码:
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_URL}));
我的意图是,当我指向一个图像文件时,让我们说<img src="/media/image.jpg"/>
它会自动指向http://somebucket.s3.amazonaws.com/media/image.jpg
我该怎么做?我尝试了很多方法,但它总是返回404。
但是,如果我尝试直接访问该文件http://somebucket.s3.amazonaws.com/media/image.jpg
,那就可以了。
答案 0 :(得分:0)
你为什么要那样做?这首先打破了外部存储的大部分目的。这意味着对于每个媒体请求,它必须通过Django本身,解析URL并生成重定向到S3,并带来所有开销。
相反,正如sneawo在评论中建议的那样,您只需将img src属性设置为通过S3 URL指向图像。
答案 1 :(得分:0)
原来,django会自动将media_url附加到imagefield网址前面。
我的印象是我必须追加media_url,这让我找到了一个更简单的解决方案。
Django Admin仅显示相对路径
![django admin显示相对路径] [1]
http://i.stack.imgur.com/aZGPy.png
但是,tastypie给了我绝对的路径
http://i.stack.imgur.com/SEdaX.png
所以我现在不用再担心网址了......再次感谢网友:)