【发布时间】:2014-02-26 01:47:55
【问题描述】:
我正在努力让静态文件 (CSS) 在部署到 Openshift 的 Django 站点上运行。我可以通过将样式信息放入 HTML 模板来解决此问题,但 Django 管理站点样式表仍然不会加载。一切都在本地工作,包括关闭调试。
Openshift 将静态文件存储在 repo/ -> wsgi/ -> static/ 下,其中主项目目录也在 wsgi/ 下。
下面是settings.py的相关部分:
ON_OPENSHIFT = True if 'OPENSHIFT_REPO_DIR' in os.environ else False
PROJECT_DIR = os.path.join(os.path.abspath(os.path.dirname(__file__)), os.pardir)
if ON_OPENSHIFT:
STATIC_ROOT = os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'wsgi', 'static')
else:
STATIC_ROOT = ''
STATIC_URL = '/static/'
if ON_OPENSHIFT:
STATICFILES_DIRS = (os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'wsgi', 'static'))
else:
STATICFILES_DIRS = [os.path.join(PROJECT_DIR, 'static')]
我有一个在部署时运行以下脚本的脚本:
cd $OPENSHIFT_REPO_DIR/wsgi/squadron
python manage.py collectstatic --noinput
我使用的是 Python 3.3 和 Django 1.6,并参考了以下指南:文档中的 1 和 2。
我做错了什么?我没有收到错误消息,只是没有样式表,无论是我自己的还是在 Django 管理员上。当我使用 SCP 时,我可以验证我的样式表是否在正确的 Openshift 目录中。
【问题讨论】:
-
您对 STATICFILES_FINDERS 和 STATICFILES_STORAGE 的设置是什么?只是为了打折任何简单的修复,请按照我在this question 上的回答进行操作。此外,您对 STATICFILES_DIRS 的第一次引用需要在两个右括号之间添加一个逗号:
STATICFILES_DIRS = (os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'wsgi', 'static'),),否则它不会被解释为元组,这当然是您想要的。 -
谢谢 - 修复了逗号问题。 STATICFILES_FINDERS 是默认设置,选择 ...FileSystemFinder 和 ...AppDirectoriesFinder。 STATICFILES_STORAGE 不存在,因此它的默认值是 ...StaticFilesStorage。您的链接中的教程很棒,但我的设置正确。
标签: django openshift django-staticfiles paas static-files