此处的简短答案:在您的 settings.py 中,确保为 STATIC_DIRS 设置了一个文件夹,即 STATIC_URL(通常只是“/static/”)。设置 myproject/static/ 的 STATIC_ROOT 设置。将此文件夹留空。在 STATIC_DIRS 下添加一个文件夹,命名为 myprojet/assets/。然后在 assets/ 中有 css、img 和 js。现在,您可以通过此位置访问这些组织文件夹中的所有资产,无论其位于哪个文件夹。 {{ STATIC_URL }}/main.css {{ STATIC_URL }}/banner.png 作为最后的手段,运行 python manage.py collectstatic at你的 shell,并确保在你的 settings.py 中你有取消注释 Django 的静态文件处理程序。(默认情况下它们是未注释的。)
Django 最佳实践长答案继续阅读(以我有限的经验)。
由于他们引入了 STATIC_DIRS { } 设置,我一直将 myproject/static/ 目录留空。(在部署期间,有必要在您的服务器上运行 python manage.py collectstatic 命令以收集站点包中的所有管理文件以及您的静态服务器将提供的其他内容。因此,将其留空,以免发生混乱稍后在那里。为您的“资产”使用不同的文件夹。)
我有一个名为 src 的目录,许多人在项目级别也将其称为媒体。带有 manage.py 的 Django 1.4 项目级别而不是您的 settings.py。我将 myproject/src/ 添加到 STATIC_DIRS 设置中。它是一个应该包含字符串的元组。在 src/ 目录中,我有 js、img、css。您可能决定创建的所有 STATIC_DIRS 最酷的事情是它们都可以通过以下方式访问
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}/main.css" />
注意:即使您的 css 文件目录结构可能是多个嵌套文件夹,或者在本例中为 myproject/src/css/main.css ,您也可以这样做。Django 不关心你的目录结构。一般来说,Django 与其元素的耦合非常松散。例如,很容易插入您选择的另一种 Pythonic 模板语言。就像设置 STATIC_URL 和 STATIC_DIRS 很容易一样,Django 知道在哪里查找,它从 /static/ 为它们提供服务。