2012-07-10 29 views
5

私は静的ファイルを管理するためにDjango 1.3.1とcontrib.collectstaticアプリを使用しています。django collectstatic上書き

マイプロジェクトの構造はstatic-mediaが、このプロジェクトのために静的ファイルを含むフォルダです

myproject 
    - settings.py 
    - static-media 
    - urls.py 
    - media 
    - manage.py 

です。私のsettings.pyでは私が持っている:私は管理者のレイアウトを変更するadmin_toolsを使用してい

PROJECT_PATH = os.path.realpath(os.path.dirname(__file__)) 
STATIC_ROOT = os.path.join(PROJECT_PATH, "static")+'/' 
STATIC_URL = "/static/" 
STATICFILES_DIRS = (
     os.path.join(PROJECT_PATH, 'static-media'), 
) 

。しかし、私はadmin_toolsから特定のCSSファイル(theming.css)を上書きしたい。私の静的メディアフォルダには、admin_tools/css/theming.cssを置いています。 python manage.py collectstaticを初めて実行すると、admin_toolsのデフォルトのtheming.cssを無視し、static-mediaで定義したものを使用することで、期待どおりに動作します。残念ながら、私は再度コマンドを実行すると、それは私のCSSを上書きし、デフォルトを追加します。ここで

python manage.py findstatic admin_tools/css/theming.cssのための出力です:

Found 'admin_tools/css/theming.css' here: 
    /home/paulo/Desktop/Projects/zennetwork/prd/zennetwork/static-media/admin_tools/css/theming.css 
    /home/paulo/Desktop/Projects/zennetwork/prd/lib/python2.7/site-packages/admin_tools/theming/static/admin_tools/css/theming.css 

すべてのヘルプは高く評価されます。ありがとう。

答えて

2

Django 1.4にアップグレードしたところ、問題は解決しました。

何が原因かわかりません。

7

Django docsは言う:

重複するファイル名は、デフォルトでは、テンプレートの解像度はどのように機能するかに似た方法で解決されています。最初に指定した場所の一つで発見されたファイルが使用されます。混乱している場合は、findstaticコマンドを使用すると、見つかったファイルを表示できます。

findstaticからの出力に基づいて、最初のスタイルはカスタムスタイルでなければならず、したがって、収集されたものでなければなりません。なぜそれがしていないのは謎です。

他のファイルを明示的に無視することもできます。これは、痛みのビットだが、それはあなたのスタイルが上書きされないことを保証します:

python manage.py collectstatic --ignore site-packages/admin_tools/css/theming.css 

あなたにも、他のファイルを無視する必要がある場合は、あなたが--ignore <pattern>を追加し続けることができます。しかし、これは確かに非常に実行可能な長期的な解決策ではありません。

関連する問題