无法找到Django和OpenShift静态文件

时间:2014-06-25 01:12:54

标签: django openshift django-settings django-staticfiles

所以我遵循了这个教程: https://github.com/rancavil/django-openshift-quickstart/wiki/Tutorial-How-create-an-application-with-Django-1.6-on-Openshift

我尝试将静态图片添加到默认的home.html页面,但它却找不到它。

HTML:

{% load static %}
<html>
    <head>

    </head>
    <body>
        <img src="{% static 'Logo_Trans.png' %}">
        <div class="left"></div>
        <div class="right">
            <p>is coming soon</p>
        </div>
    </body>
</html>

所有其他文件都在给出的repo中列出。

2 个答案:

答案 0 :(得分:1)

我发现了问题。静态文件在部署时正常运行,但在调试模式下则不正常。要解决这个问题,只需在settings.py

中添加STATICFILES_DIR变量即可

查找

if ON_OPENSHIFT:
     DEBUG = False
else:
     DEBUG = True

添加:

if ON_OPENSHIFT:
     DEBUG = False
else:
     DEBUG = True
     STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),
                            '/var/www/static/',)

Openshift是一项非常好的服务,但绝对需要为django更新他们的文档/示例。他们的示例程序仍然运行django 1.4。希望这能帮助遇到此问题的其他任何人。

答案 1 :(得分:1)

您可以阅读此问题的答案Django cannot find static files. Need a second pair of eyes, I'm going crazy。希望它能帮助您理解静态文件。 Django中的静态文件总是有点痛苦。

顺便说一句,正如我在上一篇评论中所解释的那样,我建议你在其中的静态文件夹中创建一个名为common的应用程序,以放置非特定于应用程序的静态内容。静态应用程序特定文件应放在应用程序中的静态文件夹中。这样,你可以忘记定义STATICFILES_DIRS变量,它总是在DEBUG模式下工作。

之后,ofc,定义STATIC_ROOT,当你想在部署模式下工作时,执行collectstatic命令,它也可以工作。

经过数百次这样的问题处理后,我发现这是最好的方法。