Django:在urls.py中为亚马逊s3制作别名?

时间:2013-02-15 14:02:31

标签: django amazon-s3 angularjs django-urls django-media

我在设置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,那就可以了。

2 个答案:

答案 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

所以我现在不用再担心网址了......再次感谢网友:)