避免Django s3-urls剥离

时间:2014-03-20 11:14:04

标签: django amazon-s3

我正在尝试设置迷你django应用,以允许用户从s3下载文件。 我写了一个简单的python函数(当然使用boto)来获取正确的url但是当我用django处理url时,url被剥离了。

这是我的urlfetcher:

def s3url(key):
    s3 = None
    try:
        s3 = boto.connect_s3(aws_access_key_id=settings.access_id,aws_secret_access_key=settings.secret_key,is_secure=False)
    except boto.exception.S3ResponseError:
        print "[S3] unable to connect to s3!"
        return None
    url = s3.generate_url( settings.EXPIRES_IN, 'GET', bucket=settings.BUCKET, key=key)
    return url

这是我的django视图

def gets3(request,key):
    url = aws.s3url(key)
    return HttpResponse(url)

当我在django shell中尝试视图时,我得到以下内容:

>>> r = manager.s3_views.gets3('xxxxx/5/2014-03-10_08:37:39.274998-d3421964017734f96198c74d853eb2e7')
>>> print r
Content-Type: text/html; charset=utf-8

http://BUCKETNAME.s3.amazonaws.com/xxxxx/5/2014-03-10_08%3A37%3A39.274998-d3421964017734f96198c74d853eb2e7?Signature=FVWZPBnoOAOm5PuNOajQ3Ce5GrM%3D&Expires=1395310316&AWSAccessKeyId=AKIAI4QC5JE7YMBEITJA

这是正确的,但当我使用django runserve时,我只得到:

http://BUCKETNAME.s3.amazonaws.com/?Signature=PhR4IfGwKHsryp2fAllLPSc9Bds%3D&Expires=1395311016&AWSAccessKeyId=AKIAI4QC5JE7YMBEITJA

帮助!

1 个答案:

答案 0 :(得分:0)

解决了这个谜......

urls.py中的正则表达式错误,因此它没有将参数传递给gets3函数。 因此,该函数返回一个剥离的URL:(