在开发中提供静态文件

时间:2015-12-28 15:55:53

标签: python django

我有一些当前从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为真时)从项目中提供静态文件,而不是从S3获取。

在我urlpatterns urls.py的{​​{1}} + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) base.html结束时。{/ p>

最后,在我的<!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">。如果我使用int countInterval(double *tab, double min, double max){ int i, count = 0; for (i = 0; i < POINTS; i++){ if (tab[i] >= min && tab[i] < max) { count++; } } return count; } int *countWindow(double *tab){ // interval +1 double interv = INTERVALLES; int *interval = (int*)malloc(sizeof(INTERVALLES)), i, debug = 0; double lb = 2/interv; double min = -1; double max = min + lb; if (debug==1) { printf("lb : %f\n",lb); } for(i = 0; i < INTERVALLES; i++){ interval[i] = countInterval(tab, min, max); if (debug==1) { printf("min = %f - max = %f - count = %d\n", min, max, interval[i]); } min += lb; max = min + lb; } return interval; } 运行并查看来源,则会获得double *tab

我错过了什么在本地服务?

1 个答案:

答案 0 :(得分:1)

您必须将相对路径传递给static模板标记,而不使用标题斜杠:

{% static 'css/normalize.css' %}