Khi mọi người đã chỉ ra, bạn nên đặt chỉ static_dir
của bạn trước khi /.*
mẫu
Tuy nhiên, đó không phải là điều duy nhất bạn nên biết.
Bằng cách đặt chỉ thị này vào app.yaml, bạn tạo máy chủ web AppEngine (cho dù đó là máy chủ phát triển hoặc máy chủ sản xuất) xử lý đường dẫn /static
và bạn cần tất cả các tệp tĩnh nằm trong thư mục tĩnh. Điều này có nghĩa bạn sẽ phải chạy python manage.py collectstatic
mỗi khi bạn thay đổi bất cứ điều gì trong các tập tin tĩnh của bạn (đặc biệt là nếu bạn có các ứng dụng/sử dụng với các tập tin tĩnh - như, nói, admin
hoặc django-tinymce
) chỉ để kiểm tra những thay đổi trên máy chủ của địa phương
Vậy làm thế nào để tránh điều đó? Theo mặc định, các tệp tĩnh cung cấp các trình trợ giúp để phục vụ các tệp này trên máy chủ phát triển mà không cần chạy tập hợp mọi lúc, vấn đề là xung đột tên direcotry được mô tả trong đoạn trước: Django không thể bắt các yêu cầu tới đường dẫn tệp tĩnh của bạn, vì chúng được xử lý bởi máy chủ ứng dụng. Bạn có thể giải quyết nó bằng cách sử dụng các đường dẫn khác nhau trên máy chủ sản xuất và phát triển:
# in settings.py
if DEBUG:
STATIC_URL = '/devstatic/'
else:
STATIC_URL = '/static/'
(djangoappengine đặt DEBUG thành True on development server). Bạn có thể để lại ADMIN_MEDIA_PREFIX = '/static/admin/'
, nhưng hãy nhớ để chạy collectstatic ít nhất một lần trước khi sử dụng quản trị
Tất nhiên nhớ để sử dụng {{ STATIC_URL }}path/to.css
trong các mẫu thay vì /static/path/to.css
Oh, và tôi cho rằng bạn phân biệt các thư mục cho các tập tin tĩnh ban đầu bạn làm việc và thư mục chứa các tệp tĩnh. Tôi sử dụng này trong settings.py của tôi:
STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'sitestatic')
STATICFILES_DIRS = (
os.path.join(os.path.dirname(__file__), 'static'),
)
Điều này có nghĩa: bạn đặt FIELS tĩnh của bạn thành static
dir (và vào static
dirs của ứng dụng), collectstatic
thu thập chúng vào sitestatic
dir.Thích hợp app.yaml
chỉ là
- url: /static
static_dir: sitestatic
Cuối cùng, bạn có thể cấu hình để bỏ qua app.yaml
static
và media
thư mục khi tải ứng dụng của bạn, vì tất cả các tập tin tĩnh sẽ được thu thập vào và phục vụ từ sitestatic
. Tuy nhiên, bạn chỉ nên đặt tùy chọn này khi đang tải lên (nếu không các tệp này sẽ không khả dụng trong máy chủ gỡ lỗi)
Bạn có đang đưa mẫu của mình vào cơ hội nào không? –