【问题标题】:Using S3 only in production Django仅在生产 Django 中使用 S3
【发布时间】:2013-02-27 08:14:45
【问题描述】:

我的 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 文件只用于生产?

【问题讨论】:

    标签: django amazon-s3 django-storage


    【解决方案1】:

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

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

    .locals 在你的基础文件已经被导入之后被导入,所以你的行:

    if not DEBUG:
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-15
      • 2016-01-04
      • 2021-03-22
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      相关资源
      最近更新 更多