OpenShift Django上的静态文件
我在提供静态文件时遇到问题-即样式表和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',
)
当我拖入日志时,出现了404错误。但是我无法弄清楚OpenShift在哪里寻找或调试这些图像。我已经尝试过使用,STATIC_URL =
'/static/'
但这也不起作用。
-
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进行部署,以告诉它收集静态文件。
3) 您的static_root文件夹不能在项目中的任何位置,因为Openshift Web服务器找不到它。它应该在yourproject /
wsgi / static <-–下(因此,这将是STATIC_ROOT变量值)。正如我在另一个问题中已经回答过的那样,为Openshift从头开始一个新项目很痛苦。我写了一篇有关创建一个新项目以使其与Openshift一起使用的文章,您也可以访问那里引用的提交,这会将您重定向到一个有效的基本Openshift项目。您也可以从Openshift存储库下载基本项目,但它遵循旧的(但仍在运行)项目结构。您现在可以为python应用程序使用更简单的项目结构