Django - 即使在手动修改路径后也无法找到我的静态文件

时间:2018-01-07 22:49:11

标签: django django-staticfiles

我遇到了一个问题,即使经过一个晚上的尝试,我还没有能够解决。

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

当我尝试使用'findstatic'或'collectstatic'命令查找文件时,文件会被删除。就像'静态'目录对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' %}">

1 个答案:

答案 0 :(得分:1)

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

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

请注意,myapp的app静态文件位于与app文件夹相同的子文件夹中。这可以轻松命名文件,因为您可以在docs中阅读更多信息。

  

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