仅在生产Django中使用S3

时间:2013-02-27 08:14:46

标签: django amazon-s3 django-storage

我将base_settings.py设置为DEBUG = False,在我的设置结束时,我有以下代码:

    if not DEBUG:
    AWS_STORAGE_BUCKET_NAME = 'bucket_name'
    STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
    S3_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
    STATIC_URL = S3_URL

在我的local_settings.py中,我设置了DEBUG = True

设置模块的 init .py文件:

from .base import *

try:
    from .local import *
except ImportError:
    pass

出于某种原因,在本地工作时,尽管我没有DEBUG设置,它仍然会尝试从S3中提取静态文件。我想的原因是它首先读取基本文件并在实际导入local_settings.py之前测试DEBUG。所以我的问题是:我如何绕过这个,所以s3文件只用于制作?

1 个答案:

答案 0 :(得分:1)

假设您在本地有一个.local包,请尝试删除.local导入周围的try / except,看看是否有任何错误被抛出。

另外,如果您将base中的DEBUG设置为TRUE,并设置URL和存储,然后在.locals中将DEBUG设置为false,则需要重置.locals中的URL和存储。

.locals是在导入基础文件后导入的,所以你的行:

if not DEBUG:

...在导入期间评估为TRUE,将所有内容设置为使用S3。