我刚刚在我的Django应用程序中安装了Grunt。在我的blogengine
应用中,我有一个文件夹:assets/css/global.scss
。 Grunt将此.scss文件缩小为static/css/global.css
。
我仍然在本地开发应用程序。我一直在运行grunt sass并且在我正在努力时将scss文件缩小为css。
但是,我已将静态网址等设置为我的Amazon S3存储桶。这意味着当我运行collectstatic
时,我必须等待很长时间才能上传到S3,这样我才能看到我的更改。
我想最终将其部署到Heroku,但与此同时,如何设置我的静态内容在本地工作并设置生产设置以使用S3?
这是在settings.py中:
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'XXXXXXXXXXXXXX'
AWS_SECRET_ACCESS_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
AWS_STORAGE_BUCKET_NAME = 'ingledow'
STATIC_URL = 'http://ingledow.s3.amazonaws.com/'
答案 0 :(得分:0)
你可能会搞乱DEBUG设置。在本地开发中,将DEBUG设置为True,Django将处理所有静态文件的服务。一旦你推向生产,将DEBUG设置为False,S3设置将启动。你可以有不同的设置文件,或者你可以在本地和Heroku上设置一个环境变量,并在你的设置中调用它(即:`DEBUG = os。 ENVIRON [' DEBUG&#39]。
答案 1 :(得分:0)
在你的bashrc中,设置一个环境标志:
alias DJANGO_ENV=local
(或者,只需在本地shell中执行此操作:export DJANGO_ENV = local)
然后在settings.py中:
import os
if os.environ.get( 'DJANGO_ENV', '' ) == 'local':
# SETUP LOCAL SETTINGS
else:
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'XXXXXXXXXXXXXX'
AWS_SECRET_ACCESS_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
AWS_STORAGE_BUCKET_NAME = 'ingledow'
STATIC_URL = 'http://ingledow.s3.amazonaws.com/'
执行pushstatic时关闭本地设置(例如“unset DJANGO_ENV”)。在生产(即Heroku)上,您将没有DJANGO_ENV系统变量,因此它将默认为AWS文件。