Làm cách nào để sử dụng CSS trong Django?


110

Tôi đang tạo ứng dụng của mình bằng Django và đang tự hỏi làm cách nào để Django sử dụng tệp CSS của mình? Tôi cần thực hiện cài đặt nào để Django nhìn thấy tệp css?

NB: Trên máy cục bộ

Câu trả lời:


48

Nếu bạn đang sử dụng máy chủ phát triển, hãy làm theo hướng dẫn cách quản lý tệp tĩnh của dự án django để thiết lập URL của bạn, sau đó tham chiếu đến bạn các tệp phương tiện trong mẫu - ví dụ, một hình ảnh bên trong một thư mục hình ảnh /site_media/images/foo.gif.


25
Chỉ cần một ghi chú nhanh về các tài liệu Django đó - hãy đảm bảo bạn chọn tài liệu cho phiên bản Django bạn đang sử dụng. Mọi thứ dường như đã thay đổi rất nhiều giữa các phiên bản liên quan đến tệp tĩnh.
Sam Starling

3
@Sam có một điểm tuyệt vời. tôi không thể tìm ra các tệp tĩnh cho cuộc sống của tôi. sau đó, thay đổi phiên bản django đã cài đặt, và thì đấy. đó thực sự là tất cả những gì tôi phải làm vì rõ ràng là tôi đang xem tài liệu cho phiên bản sai.
Josh Brown,

36

Nói một cách tổng quát hơn, bạn đang hỏi cách phân phát tệp tĩnh từ Django. Nếu bạn đang chạy trong Apache, bạn nên đọc http://docs.djangoproject.com/en/dev/howto/deployment/modpython/

Nếu bạn đang chạy máy chủ phát triển (giả sử trên máy tính xách tay của bạn), hãy đọc http://docs.djangoproject.com/en/dev/howto/static-files/

Hãy lưu ý tuyên bố từ chối trách nhiệm lớn, quan trọng liên quan đến máy chủ phát triển Django:

  • Sử dụng máy chủ này không hiệu quả và không an toàn.
  • Không sử dụng điều này trong cài đặt sản xuất.
  • Chỉ sử dụng cái này để phát triển.

"Không sử dụng điều này trong cài đặt sản xuất." Bạn có phiền mở rộng về điều này không?
Chris

@Chris: Bạn nói đúng, tuyên bố hơi mơ hồ. Tôi đang đề cập đến máy chủ phát triển Django. Mặc dù tôi đã chạy nó một vài lần trên trang web sản xuất của chúng tôi, nhưng nó chỉ trong một khoảng thời gian ngắn khi gỡ lỗi các sự cố gnarly.
Peter Rowell

Cảm ơn bạn đã làm rõ, tôi đang xem các triển khai django của mình đang chạy trên apache và tự hỏi mình đã làm gì sai. :)
Chris

1
Đẹp. Tôi thích 3 mục nói cùng một điều theo những cách khác nhau. Cảm ơn vì đã cảnh báo.
KobeJohn

13
Tôi thực sự yêu thích những người đã đi cùng 4,5 năm sau khi một câu trả lời được đăng và bỏ phiếu cho nó. Tôi tự hỏi nếu họ thậm chí biết Django gì trong 11/08 ... có lẽ là không. Nó không phải là điểm đại diện mà có được với tôi, đó là sự kết hợp hiển thị của vô minh và kiêu ngạo với chỉ một chút là waaay muộn để đảng. Tôi tự hỏi làm thế nào họ sẽ đánh giá các bài đăng của tôi cho comp.lang.c trong, ồ, giả sử năm 1987? Tốt hơn là đừng hỏi.
Peter Rowell

13

Điều này cũng gây ra cho tôi vấn đề trong một thời gian (404 không tìm thấy lỗi). Phần còn thiếu đối với tôi là chỉnh sửa STATICFILES_DIRStuple trong settings.py để cung cấp cho tôi điều này:

STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    os.path.join(os.path.dirname(__file__),'media').replace('\\','/'),
)

Sau đó, thao tác này đã chọn các tệp CSS của tôi trong một thư mục có tên là 'media' ở cấp cao nhất trong dự án django của tôi.

Tôi cũng đã có:

MEDIA_ROOT = ''
MEDIA_URL = ''
STATIC_ROOT = ''
STATIC_URL = '/media/'

(hãy đảm bảo rằng bạn đã dẫn đầu /ở trên trongSTATIC_URL )

Tất nhiên, như đã nói ở trên, bạn cần có tệp CSS được đưa vào đúng cách từ các tệp html của mình. Tôi đã có:

<link href="{{ STATIC_URL }}css/ea_base.css" rel="stylesheet" type="text/css" media="screen" />

Cuối cùng, một giải pháp rõ ràng, đơn giản và thanh lịch. Hoạt động tốt với django 1.5.
pbarill

# Luôn sử dụng dấu gạch chéo về phía trước, ngay cả trên Windows. .replace('\\','/')là không cần thiết.
mak

12

Tôi cần làm những cài đặt nào để Django nhìn thấy tệp css?

Không ai.

Đảm bảo rằng mẫu của bạn bao gồm tệp CSS (như HTML tiêu chuẩn) và đặt tệp CSS trên máy chủ phương tiện.

Để làm rõ: Với Django, bạn nên phân phát tất cả phương tiện của mình (mọi thứ không phải là html động) từ một phiên bản máy chủ khác. Bạn triển khai như thế nào là hoàn toàn tùy thuộc vào bạn nhưng hầu hết mọi người đều tạo miền phụ.


2
Chào, Oli. Tôi biết bài đăng này đã gần 3 năm tuổi, nhưng đây vẫn là cách tốt nhất để liên kết css với các mẫu django? Điều này có vẻ như là dễ dàng nhất chỉ cần liên kết css với một URL abs như static.example.com và chỉ cần lưu trữ tất cả các tệp tĩnh tại url đó.
cp3


0

Cách đơn giản nhất để sử dụng css với django là thêm nó vào các mẫu của bạn dưới dạng tệp tĩnh.

Nhưng nó hơi giống ajax, tôi không tìm thấy bất cứ điều gì hướng dẫn cách đưa nó vào một cách tiêu chuẩn.

Có một mô-đun máy nén css cho django nếu bạn muốn tối ưu hóa kích thước của nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.