6

contrib.collectstatic静的ファイルを管理するためにDjango1.3.1とアプリを使用しています。

私のプロジェクト構造は

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

ここstatic-mediaで、はこのプロジェクトの静的ファイルを含むフォルダーです。私のsettings.pyには次のものがあります。

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を使用して管理者のレイアウトを変更しています。ただし、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

どんな助けでも大歓迎です。ありがとう。

4

2 に答える 2

7

Djangoのドキュメントには次のように書かれています。

重複するファイル名は、デフォルトでテンプレート解決の動作と同様の方法で解決されます。指定された場所の1つで最初に見つかったファイルが使用されます。混乱している場合は、findstaticコマンドを使用すると、見つかったファイルを確認できます。

最初のものからの出力に基づいてfindstatic、カスタムスタイルである必要があり、したがって、収集されたものである必要があります。なぜそれが行われないのかは謎です。

他のファイルを明示的に無視することはいつでも可能です。少し面倒ですが、スタイルが上書きされないことが保証されます。

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

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

于 2012-07-10T19:05:42.083 に答える
3

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

何が原因なのかよくわかりません。

于 2012-07-18T00:36:56.247 に答える