1

最近、Django アプリ (1.4.1) に Django Compressor (1.2) をインストールしました。django-compressor をインストールするまでは、collectstatic を実行すると、ローカルの他の場所にコピーすることなく、boto 経由で静的ファイルを S3 に問題なくアップロードできました。ただし、django コンプレッサーをインストールすると、collectstatic のいずれかが実行されます。

A) 静的ファイルを S3 にアップロードしますが、すべてのローカル バージョンを空のファイルに置き換えます。

B) 静的ファイルを S3 にアップロードしますが、ローカル バージョンをルート フォルダーにコピーします。

結果Aについて、私は持っています

COMPRESS_ROOT = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'proj/static',)

結果Bについて、私は持っています

STATIC_ROOT = ''

COMPRESS_ROOT = STATIC_ROOT

STATIC_ROOT が設定されているため、B がファイルをルートにコピーする理由は理解できますが、COMPRESS_ROOT をコメントアウトすると、collectstatic は通常に戻ります (つまり、ローカルで何も変更せず、S3 にアップロードするだけです)。STATIC_ROOT は関係なく同じままであるため、COMPRESS_ROOT は collectstatic に影響を与えないと思っていたでしょう。どうやらそうではないようです。

回避策として、私は次のことを行ってきました。

  • python manage.py compress を実行したいときは、COMPRESS_ROOT を次のように設定します。

    COMPRESS_ROOT = os.path.join(os.path.abspath(os.path.dirname(ファイル)), 'proj/static',)

  • python manage.py collectstatic を実行したい場合、compress_ROOT をコメントアウトします。これにより、collectstatic が Django コンプレッサー以前の機能に戻ります。

明らかにこれはハックであり、私はそれらをうまくプレイさせる方法を見つけたいと思っています. どんな提案でも大歓迎です。

以下の関連コード: #settings.py

STATIC_ROOT = ''
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(os.path.abspath(os.path.dirname(__file__)),'proj/static',),
)

AWS_STORAGE_BUCKET_NAME = #bucket-name
S3_URL = 'https://%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
STATIC_DIRECTORY = '/static/'
STATIC_URL = S3_URL + STATIC_DIRECTORY

COMPRESS_ENABLED = True
COMPRESS_OFFLINE = True
COMPRESS_URL = STATIC_URL
#COMPRESS_ROOT = STATIC_ROOT
#COMPRESS_ROOT = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'proj/static',)
COMPRESS_STORAGE = 'travel.proj.services.storage.CachedS3BotoStorage'
STATICFILES_STORAGE = 'travel.proj.services.storage.CachedS3BotoStorage'
AWS_LOCATION = 'static'

COMPRESS_JS_FILTERS = [
    'compressor.filters.template.TemplateFilter',
]
4

1 に答える 1