[英]Django is not serving static and media files in development but it is serving in production
[英]Serving static files in development
我有一些當前從Amazon S3服務的靜態文件。 這顯然是無效的,因為每次進行較小的更改時我都無法collectstatic
。 每當我進行開發時,我都希望從我的項目中為它提供靜態文件。 項目結構看起來部分如下:
myproject
-app
--templates
-myproject
--static
---app
----css
----js
----img
我的settings.py
部分看起來像這樣:
STATIC_ROOT = 'staticfiles'
MEDIA_ROOT = os.path.join(BASE_DIR, 'mediafiles')
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static/app'),
)
AWS_HEADERS = {
'Expires': 'Thu, 31 Dec 2099 20:00:00 GMT',
'Cache-Control': 'max-age=94608000',
}
AWS_STORAGE_BUCKET_NAME = os.environ['AWS_STORAGE_BUCKET_NAME']
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
if DEBUG:
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_URL = '/static/'
else:
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATIC_URL = "https://%s/" % AWS_S3_CUSTOM_DOMAIN
STATICFILES_LOCATION = 'static'
MEDIAFILES_LOCATION = 'media'
MEDIA_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, MEDIAFILES_LOCATION)
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
我想要實現的是,如果我正在運行開發(當DEBUG
為true時)將從項目中提供靜態文件,而不是從S3中獲取。
在urls.py
urlpatterns
末尾,我有+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
。
最后,在我的base.html
我有:
<!doctype html>
...
<link rel="stylesheet" href="{% static '/css/normalize.css'%}">
如果我使用debug=True
運行,並且查看頁面的源代碼,則會看到<link rel="stylesheet" href="/css/normalize.css">
不在文件中的位置。 如果我運行debug=False
並查看源代碼, <link rel="stylesheet" href="<AMAZON BUCKET>/css/normalize.css">
得到<link rel="stylesheet" href="<AMAZON BUCKET>/css/normalize.css">
。
在本地服務時我缺少什么?
您必須將相對路徑傳遞到static
模板標簽,而不能使用斜杠:
{% static 'css/normalize.css' %}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.