0

私は本当に django-pipeline が好きですが、各アプリ内にアセットを設定したいと考えています。それはよりきれいで、settings.py を台無しにしないでください。したがって、「コア」アプリの __init__.py には、以下のコードがあります。

# __init__.py file

from django.conf import settings
from django.utils.importlib import import_module


GLOBAL_PP_JS = {}
GLOBAL_PP_CSS = {}

for app in settings.INSTALLED_APPS:

    try:
        mod = import_module('%s.compressed' % app)
    except:
        continue

    try:
        GLOBAL_PP_JS.update(mod.PIPELINE_JS)
    except:
        pass

    try:
        GLOBAL_PP_CSS.update(mod.PIPELINE_CSS)
    except:
        pass

PIPELINE_JS = setattr(settings, 'PIPELINE_JS', GLOBAL_PP_JS)
PIPELINE_CSS = setattr(settings, 'PIPELINE_CSS', GLOBAL_PP_CSS)

各アプリで圧縮された .py モジュールを検索します。

# compressed.py file

PIPELINE_JS = {
    'js_group': {
        'source_filenames': (
            'js/base.js',
        ),
        'output_filename': 'js/group.js',
    }
}

設定には変数の上書きを防ぐセキュリティ機能があるため、うまくいきません。

このコードを機能させるための Django パターンまたは回避策を教えてもらえますか?

Django 1.7 と Django-Pipeline 1.4.3 を使用しています。

4

1 に答える 1