Django 德扬戈。在本地和;远程静态文件

Django 德扬戈。在本地和;远程静态文件,django,django-staticfiles,Django,Django Staticfiles,在收集我的静态文件并将其存储在Amazon Bucket(AWS S3)中之后,当我在本地运行项目时,它仍然使用在线存储的静态文件,这是一个问题原因。当我想更改ex的css文件时,我必须运行collectstatic或手动将文件上载到Amazon。我尝试添加一个新的设置变量“LOCAL_STATICFILES”,如下所示: 设置.py LOCAL_STATICFILES = False if not LOCAL_STATICFILES: DEFAULT_FILE_STORAGE = 's

在收集我的静态文件并将其存储在Amazon Bucket(AWS S3)中之后,当我在本地运行项目时,它仍然使用在线存储的静态文件,这是一个问题原因。当我想更改ex的css文件时,我必须运行collectstatic或手动将文件上载到Amazon。我尝试添加一个新的设置变量“LOCAL_STATICFILES”,如下所示:

设置.py

LOCAL_STATICFILES = False
if not LOCAL_STATICFILES:
    DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
    AWS_ACCESS_KEY_ID = os.environ['AWSAccessKeyId']
    AWS_SECRET_ACCESS_KEY = os.environ['AWSSecretKey']
    AWS_STORAGE_BUCKET_NAME = os.environ['AWS_STORAGE_BUCKET_NAME']
    S3_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
    STATIC_URL = S3_URL
    STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

if LOCAL_STATICFILES:
    STATIC_URL = '/static/'

STATIC_ROOT = '/'
但当我将本地_staticfile转换为True并运行服务器时,django找不到它们

项目的文件夹如下所示:

  • 计划
    • 应用程序
    • 应用程序
    • 静止的
      • css
      • js
      • img
    • 模板

我做错了什么?

首先:确保有办法区分您是否处于支持Amazon bucket配置的环境中。这意味着,通常这将是您的生产环境,您已经在其中配置了amazon bucket设置

因此,你将:

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
# this is the base project path

if 'AWSAccessKeyId' in os.environ:
    # assume the presence of this key will determine whether
    # we are, or not, in the bucket-supporting environment

    DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
    AWS_ACCESS_KEY_ID = os.environ['AWSAccessKeyId']
    AWS_SECRET_ACCESS_KEY = os.environ['AWSSecretKey']
    AWS_STORAGE_BUCKET_NAME = os.environ['AWS_STORAGE_BUCKET_NAME']
    STATIC_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
    # static url will be the re
    STATIC_ROOT = None
    # STATIC_ROOT doesn't matter since you will not invoke
    # `manage.py collectstatic` from this environment. You
    # can safely let it to None, or anything like:
    # os.path.join(BASE_DIR, 'static')
else:
    STATIC_URL = '/static/'
    # the static files url will point to your local,
    # development, server
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    # here, STATIC_ROOT matters, since you will invoke
    # `manage.py collectstatic` from your local environment.