【问题标题】:Django and OpenShift static files can't be found找不到 Django 和 OpenShift 静态文件
【发布时间】:2014-08-15 10:17:50
【问题描述】:

所以我遵循了这个教程: 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 中列出。

【问题讨论】:

    标签: django openshift django-settings django-staticfiles


    【解决方案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。希望这对遇到此问题的其他人有所帮助。

    【讨论】:

      【解决方案2】:

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

      顺便说一句,正如我在最后一条评论中解释的那样,我建议您在其中的静态文件夹中创建一个名为 common 的应用程序,以放置非应用程序特定的静态内容。静态应用程序特定文件应放置在应用程序内的静态文件夹中。这样一来,您就可以忘记定义 STATICFILES_DIRS 变量,它始终在 DEBUG 模式下工作。

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

      在处理了数百次此类问题后,我发现这是最好的方法。

      【讨论】:

        猜你喜欢
        • 2014-06-03
        • 2021-08-27
        • 2014-11-10
        • 2011-08-26
        • 2020-06-22
        • 2021-08-16
        • 2020-06-20
        • 2019-06-24
        相关资源
        最近更新 更多