Django - Thu thập tệp tĩnh
Xử lý tập tin tĩnh
Các tệp tĩnh trong dự án của bạn, như biểu định kiểu, JavaScript và hình ảnh, không được Django xử lý tự động khi DEBUG = False
.
Khi DEBUG = True
, thao tác này hoạt động tốt, tất cả những gì chúng tôi phải làm là đặt chúng vào thư mục static
của ứng dụng.
Khi DEBUG = False
, các tệp tĩnh phải được thu thập và đặt vào một thư mục được chỉ định trước khi chúng ta có thể sử dụng nó.
Thu thập tệp tĩnh
Để thu thập tất cả các tệp tĩnh cần thiết cho dự án của bạn, hãy bắt đầu bằng cách chỉ định thuộc tính STATIC_ROOT
trong tệp settings.py
.
Điều này chỉ định một thư mục nơi bạn muốn thu thập các tệp tĩnh của mình.
Bạn có thể gọi thư mục này bất cứ tên nào bạn thích, chúng tôi sẽ gọi nó là productionfiles
:
my_tennis_club/my_tennis_club/settings.py
:
.
.
STATIC_ROOT = BASE_DIR / 'productionfiles'
STATIC_URL = 'static/'
.
.
Bạn có thể tạo thư mục này theo cách thủ công, thu thập và đặt tất cả các tệp tĩnh của dự án vào thư mục này, nhưng Django có lệnh thực hiện việc này cho bạn:
py manage.py collectstatic
nào sẽ tạo ra kết quả này:
131 static files copied to 'C:\Users\ your_name \myworld\my_tennis_club\productionfiles'.
131 tập tin? Tại sao nhiều như vậy? Vâng, điều này là do giao diện người dùng quản trị được tích hợp sẵn với Django. Chúng tôi muốn duy trì tính năng này trong quá trình sản xuất và nó đi kèm với rất nhiều tệp bao gồm biểu định kiểu, phông chữ, hình ảnh và JavaScript.
my_tennis_club
members/
my_tennis_club/
productionfiles/
admin/
myfirst.css
Ví dụ nên làm việc
Bây giờ bạn đã thu thập các tệp tĩnh của dự án và nếu bạn đã cài đặt WhiteNoise , ví dụ từ chương Thêm tệp tĩnh cuối cùng sẽ hoạt động.
Khởi động máy chủ và xem kết quả:
py manage.py runserver
Và kiểm tra kết quả trong trình duyệt của riêng bạn: 127.0.0.1:8000/testing/
.
Ví dụ
my_tennis_club/members/templates/template.html
:
{% load static %}
<!DOCTYPE html>
<html>
<link rel="stylesheet" href="{% static 'myfirst.css' %}">
<body>
{% for x in fruits %}
<h1>{{ x }}</h1>
{% endfor %}
</body>
</html>
Chạy ví dụ »