如果你没有在django中定义STATICFILES_DIR会发生什么?

时间:2015-11-11 17:02:41

标签: python django static

我使用django并且我的应用程序有效,当我更改style.css时应用程序更改等。

但是,我最近发现我没有定义STATICFILES_DIR,我只定义了

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

仅适用于collectstatic

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

特别是在polls/static/polls目录中?

1 个答案:

答案 0 :(得分:4)

Django默认会在每个应用中查找名为static的目录。稍后会详细介绍。

来自documentation

  

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

关键部分是

  

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

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

根据the documentation,他们实际上没有证件,因为他们被认为是私人的。但是,你可以 look at the source code用于GitHub上的“发现者”。

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

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

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