2012-07-10 58 views
5

Tôi đang sử dụng Django 1.3.1 và ứng dụng contrib.collectstatic để quản lý các tệp tĩnh của tôi.django collectstatic ghi đè

cấu trúc dự án của tôi là

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

nơi static-media là một thư mục chứa các tập tin tĩnh cho dự án này. Trong settings.py của tôi, tôi có:

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'), 
) 

Tôi đang sử dụng admin_tools để thay đổi bố cục của admin. Tuy nhiên tôi muốn ghi đè lên một tệp css cụ thể (theming.css) từ admin_tools. Vì vậy, trong thư mục phương tiện tĩnh của tôi, tôi đặt admin_tools/css/theming.css. Khi tôi chạy lần đầu tiên python manage.py collectstatic, nó hoạt động như mong đợi bằng cách bỏ qua các tệp theming.css mặc định trong admin_tools và sử dụng định dạng tôi đã định nghĩa trong phương tiện tĩnh. Thật không may nếu tôi chạy lệnh một lần nữa, nó ghi đè lên css của tôi và thêm mặc định.

Dưới đây là đầu ra cho 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 

Any help is appreciated. Cảm ơn.

Trả lời

2

Tôi đã nâng cấp lên Django 1.4 và sự cố đã được giải quyết.

Không quá chắc chắn điều gì đã gây ra.

7

Các Django docs chỉ nói:

tên tập tin trùng lặp là theo mặc định giải quyết theo một cách tương tự như cách mẫu độ phân giải hoạt động: các tập tin đó là lần đầu tiên được tìm thấy trong một trong những địa điểm cụ thể sẽ được sử dụng. Nếu bạn đang bối rối, lệnh findstatic có thể giúp cho bạn thấy những tập tin được tìm thấy.

Dựa trên đầu ra của bạn từ findstatic tùy chọn đầu tiên phải là kiểu tùy chỉnh của bạn và do đó phải là kiểu được thu thập. Tại sao nó không làm điều đó là một bí ẩn.

Bạn luôn có thể bỏ qua tệp khác một cách rõ ràng. Đó là một chút đau đớn, nhưng nó sẽ đảm bảo rằng phong cách của bạn không bị ghi đè:

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

Nếu bạn cần phải bỏ qua các file khác, cũng như, bạn có thể giữ thêm --ignore <pattern>. Điều này được thừa nhận là không phải là một giải pháp rất dài hạn khả thi, mặc dù.