我使用django并且我的应用程序有效,当我更改style.css时应用程序更改等。
但是,我最近发现我没有定义STATICFILES_DIR
,我只定义了
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
仅适用于collectstatic
。
但现在我想知道,django如何知道在哪里寻找静态文件?
特别是在polls/static/polls
目录中?
答案 0 :(得分:4)
Django默认会在每个应用中查找名为static
的目录。稍后会详细介绍。
现在我们可以放弃我们的静态文件 直接在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在真实环境中处理静态文件的方式。
这完全是可选的,但它可以让你的生活更轻松。