Mặc dù đây là câu hỏi cũ nhưng tôi vẫn gặp sự cố. Tôi thích cách các URL được tạo ra từ một danh sách trong giải pháp hiện tại, nhưng tôi đã không tin rằng đó là tốt nhất.
Sau một chút nghiên cứu, tôi thấy realfavicongenerator.net là một tài nguyên rất hữu ích tạo ra tất cả các tệp yêu cầu cho bạn và tôi đã được một đồng nghiệp hỗ trợ giải pháp đề xuất, với phiên bản Django mới hơn .
Dựa trên tất cả các bên trên, giải pháp của tôi là sử dụng khuôn khổ sitemap bản xứ, django-robots cho robots.txt và một từ điển ROOT_ASSETS, với các tập tin tiền tố như chìa khóa, và các giá trị như một danh sách các tập tin, ví dụ:
ROOT_ASSETS = {
"images/favicons/": [
"apple-touch-icon-114x114.png",
"apple-touch-icon-120x120.png",
"apple-touch-icon-144x144.png",
"apple-touch-icon-152x152.png",
"apple-touch-icon-180x180.png",
"apple-touch-icon-57x57.png",
"apple-touch-icon-60x60.png",
"apple-touch-icon-72x72.png",
"apple-touch-icon-76x76.png",
"apple-touch-icon-precomposed.png",
"favicon.ico",
]
}
Sau đó, tôi tạo ra các url của tôi với:
from django.conf.urls import patterns, url, include
from django.contrib.staticfiles.storage import staticfiles_storage
root_assets_urls = []
for prefix, files in ROOT_ASSETS.iteritems():
for f in files:
asset_url = staticfiles_storage.url("{prefix}{file}".format(prefix=prefix, file=f))
root_assets_urls.append(
url(r'^{0}$'.format(f), RedirectView.as_view(url=asset_url))
)
root_assets = patterns('', *root_assets_urls)
urlpatterns = patterns(
'',
url(r'^', include(root_assets)),
[...]
)
tôi cũng bao gồm cả HTML được tạo ra bởi realfavicongenerator.net trong đầu mẫu thạc sĩ của tôi.
Vì vậy, vấn đề chính của bạn là gì: bạn không thể tải tệp vào heroku/S3 hoặc đặt url chính xác cho tài nguyên này? – nk9
@ b1-Đặt URL chính xác. – knite
thử hướng dẫn sử dụng này [blog1] (http://matthewphiong.com/managing-django-static-files-on-heroku) [blog2] (http://www.iknuth.com/2011/10/deploying-a- django-app-to-heroku-với-dễ-tĩnh-tệp-trên-s3 /). Được ware Tôi nghĩ rằng đó là cho django 1.3. Nếu nó không giúp bạn đăng 'settings.py'. – nk9