我正在尝试建立一个使用Django的个人博客,托管在Heroku。您可以在这里查看:https://generic-blog.herokuapp.com/
在我决定将静态文件存储在AWS3上之前,我的所有静态文件都是按计划加载到我的本地机器上的。我将settings.py配置为使用S3,并使用
url("../fonts/blog.woff") format("woff")
因为路径不正确,所以没有加载。我的浏览器控制台出现以下错误:
downloadable font: download failed (font-family: "blog" style:normal weight:400 stretch:100 src index:1): status=2147746065 source: https://personal-django-blogs.s3.amazonaws.com/fonts/blog.woff
Django试图搜索字体的路径错误
我可以用s3 bucket中文件的绝对路径替换每个相对路径,但这感觉不对。我认为问题在于settings.py,但我无法理解为什么在s3上工作时,相对路径不再工作了。
下面是我的Settings.py相关配置:
STATIC_URL = '/static/'
STATICFILES_DIRS = [
BASE_DIR / 'static',
]
# Path to venv
VENV_PATH = os.path.dirname(BASE_DIR)
# Path for collectstatic to store files
STATIC_ROOT = os.path.join(VENV_PATH, 'static_root')
# User uploaded files
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(VENV_PATH, 'media_root')
DEFAULT_FILE_STORAGE = 'blog.s3_storages.MediaStorage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3StaticStorage'
CSSURL()不由Django静态文件处理,而是直接从浏览器调用
由于您使用的是相对路径解析路径值。如果您对这个CSS文件进行了多个部署,那么您需要对它进行一些预处理,以便将bucket名称设置为URL,或者只是将它设置为绝对bucket路径