OpenShift Django上的静态文件

dis*_*ive 4 python django openshift

我在提供静态文件时遇到问题 - 即我的html页面需要样式表和图像.我似乎无法理解为什么没有找到这些静态图像.这就是我的settings.py

    STATIC_URL = PROJECT_PATH + '/static/'

# Additional locations of static files
STATICFILES_DIRS = (PROJECT_PATH + "/static/",)

STATIC_ROOT = "/static/"


# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
Run Code Online (Sandbox Code Playgroud)

当我拖入日志时,我收到404错误.但我无法弄清楚在哪里或调试或弄清楚OpenShift在哪里寻找这些图像.我尝试过使用,STATIC_URL = '/static/'但这也不起作用.

arg*_*aen 7

1)你混淆了STATIC_URL和STATIC_ROOT变量.

STATIC_ROOT:需要指向您希望收集静态文件的目录.在这种情况下,它似乎是PROJECT_PATH +'/ static /'.确保此目录正确无误.

STATIC_URL:访问静态文件的URL./ static /是正确的.

删除STATICFILES_DIRS变量.它不能与STATIC_ROOT相同,因为它首先告诉Django在哪里寻找静态文件,然后告诉Django在收集静态文件时将它们存储在何处.

2)如果你正在使用Openshift,正如@ timo.rieber指出的那样,你需要一个action_hook for deploy来告诉它收集你的静态文件.

3)您的static_root文件夹不能位于项目的任何位置,因为Openshift webserver无法找到它.它应该在yourproject/wsgi/static <---下(因此,这将是STATIC_ROOT变量值).

正如我已在另一个问题中回答你的问题,从头开始为Openshift开始一个新项目是痛苦的.我写了一篇关于创建一个新项目以使其与Openshift一起工作的帖子,你也可以访问那里引用的提交,它会将你重定向到一个有效的基本Openshift项目.您也可以从Openshift repo下载基本项目,但它遵循旧的(但仍在工作)项目结构.您现在可以为python应用程序使用更简单的项目结构