我正在尝试设置迷你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
帮助!
答案 0 :(得分:0)
解决了这个谜......
urls.py
中的正则表达式错误,因此它没有将参数传递给gets3
函数。
因此,该函数返回一个剥离的URL:(