簡體   English   中英

在開發中提供靜態文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM