【问题标题】:What happens when you don't define STATICFILES_DIR in django?当您没有在 django 中定义 STATICFILES_DIR 时会发生什么?
【发布时间】:2015-11-11 17:02:40
【问题描述】:

我使用 django 并且我的应用程序可以正常工作,当我更改 style.css 时,应用程序会更改等。

不过,我最近发现我没有定义STATICFILES_DIR,我只定义了

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

这仅适用于collectstatic

但现在我想知道,django 是如何知道在哪里查找静态文件的?

具体在polls/static/polls目录中?

【问题讨论】:

    标签: python django static


    【解决方案1】:

    默认情况下,Django 会在您的每个应用程序中查找名为 static 的目录。稍后会详细介绍。

    来自documentation

    现在我们也许可以不用放置静态文件了 直接在 my_app/static/ 中(而不是创建另一个 my_app 子目录),但这实际上是一个坏主意。 Django 将使用 它找到的第一个名称匹配的静态文件,如果你有一个 在不同的应用程序 Django 中具有相同名称的静态文件 将无法区分它们。

    关键部分是

    ...Django 将使用它找到的第一个名称匹配的静态文件...

    有一些名为“静态文件查找器”的 Django 库可以帮助完成这个过程。您可以通过修改 Django 配置文件中已安装的应用程序来配置它们。

    根据the documentation,它们实际上是无证的,因为它们被认为是私有的。但是,您可以 look at the source code 为 GitHub 上的那些“发现者”。

    Django 项目由称为应用程序的模块组成。每个应用程序在生成时都包含一些默认文件。虽然有配置,但也有很多关于 Django 的约定。例如,views.py 文件。另一个这样的约定是您的应用程序的静态目录文件夹。

    您的STATICFILES_DIR 数组允许您添加其他位置来放置静态文件。这很有用,正如您在准备部署时会看到的那样,因为 Django 在真实环境中处理静态文件的方式。

    这完全是可选的,但它可以让您以后的生活更轻松。

    【讨论】:

    • ahhhhh 好的,谢谢,一旦你定义了STATICFILES_DIR,这不会再发生了,我明白了,谢谢!
    • 不客气。我也添加了更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 2023-04-09
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多