【问题标题】:Django staticfilesDjango 静态文件
【发布时间】: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,并参考了以下指南:文档中的 12

我做错了什么?我没有收到错误消息,只是没有样式表,无论是我自己的还是在 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


【解决方案1】:

当您尝试让 OpenShift 与 Django 一起工作时,这是最好的阅读来源。

http://appsembler.com/blog/django-deployment-using-openshift/

随着即将发布的版本,其中一些会发生变化(变得更好),但现在应该会有所帮助。

【讨论】:

    猜你喜欢
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 2012-09-30
    • 2018-07-10
    • 2014-06-03
    相关资源
    最近更新 更多