在django中更改STATIC_ROOT和STATICFILES_DIRS后,未加载静态文件

时间:2016-07-17 22:57:31

标签: python django

我正在关注使用CDN为我的satic文件设置STATIC_ROOT的教程,但我决定在我的django应用程序所在的同一台服务器上提供我的静态文件。我尝试更改为下面的新设置,然后运行manage.py collectstatic,现在静态文件未加载。我究竟做错了什么?这是w / django 1.9

新设置不起作用:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

旧设置工作:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn")
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
    ]
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media_cdn")

1 个答案:

答案 0 :(得分:1)

你在哪里保存静态文件?

如果您将它们保存在第二个设置文件中的BASE_DIR/static then it is important to include the same STATICFILES_DIRS`中。

如果您的静态文件遍布不同的应用,那么您需要确保将django.contrib.staticfiles.finders.AppDirectoriesFinder添加到STATICFILES_FINDERS

collectstatic的目的是从所有各种应用程序(管理员,民意调查等)获取静态文件,并将它们移动到静态根目录进行服务。您还需要确保STATIC_ROOTbeing served

将STATIC_ROOT指向BASE_DIR中的某个位置也可能不是一个好主意 - 通常这不会由您的Web服务器静态提供。