【问题标题】:Django - cant find my static files even after manually correcting the pathDjango - 即使手动更正路径后也找不到我的静态文件
【发布时间】:2018-06-16 22:59:35
【问题描述】:

我遇到了一个问题,即使经过一个晚上的尝试,我仍然无法解决。

对于我的项目,我有一个单独的 static 目录,并且我已经在其中包含了“登录”页面的 css 文件。然而,当我尝试加载网页时,出现 404 错误。

当我尝试使用“findstatic”或“collectstatic”命令查找文件时,文件会被跳过。它就像 'static' 目录对 django 是不可见的。我什至直接将'Login'文件夹复制到'static_root',但即使那样程序是Django也无法找到文件。 有谁知道我做错了什么?

我的项目文件夹如下所示:

* MPS (main folder)  
      * Scraper (app)
      * Database (app)
      * Templates
      * Static_root
      * Static
          * Login
                * css
                     * style.css

我的 settings.py 是这样配置的:

STATIC_URL = 'static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
STATIC_ROOT = os.path.join(BASE_DIR, 'static_root/')

我使用以下代码调用模板中的静态文件:

{% load staticfiles %}
(...)
<link rel="stylesheet" href="{% static 'login/css/style.css' %}">

【问题讨论】:

    标签: django django-staticfiles


    【解决方案1】:

    您的项目文件夹结构看起来与大多数 Django 项目有点不同。传统上它看起来更像这样:

    myproject/
        urls.py
        wsgi.py
        settings.py
    myapp/
        static/
            myapp/
                css/
                    style.css
                js/
                    index.js
    manage.py
    

    请注意,myapp 的应用静态文件位于与应用文件夹相同的子文件夹中。这是为了轻松命名文件,您可以在docs 中了解更多信息。

    现在我们或许可以将静态文件直接放在 my_app/static/ 中(而不是创建另一个 my_app 子目录),但这实际上是个坏主意。 Django 将使用它找到的第一个名称匹配的静态文件,如果您在不同的应用程序中有一个同名的静态文件,Django 将无法区分它们。我们需要能够将 Django 指向正确的位置,而确保这一点的最简单方法是对它们进行命名空间。也就是说,将这些静态文件放在另一个以应用程序本身命名的目录中。

    【讨论】:

    • 我最终恢复到您帖子中建议的结构,Django 终于能够找到静态文件。谢谢!
    猜你喜欢
    • 2020-12-15
    • 2013-07-16
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 2020-04-13
    • 1970-01-01
    相关资源
    最近更新 更多