Django 的静态文件系统有两件事:
将多个(特定于应用程序的)目录中的静态文件组合到一个可以提供它们的位置
通过 HTTP 提供这些文件
如果您有许多位于不同目录中的静态文件,则需要 #1。如果您想在使用开发服务器时查看这些文件,则需要 #2。在生产环境中,您通常会跳过 #2,因为 #1 的目的是将文件放在您的 Web 服务器可以访问它们的地方。
组织和收集静态文件
话虽如此,这就是你如何获得#1:
settings.py:
# This is a filesystem path
STATIC_ROOT = '/path/to/my/project/collected-static-files/'
# This is a URL prefix
STATIC_URL = '/static/'
INSTALLED_APPS = (
...
'django.contrib.staticfiles',
...
)
TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.core.context_processors.static',
...
)
此时,您可以做几件事:
您将静态文件放在每个应用程序下的“/static/”目录中。那就是 django 会寻找它们的地方。STATIC_DIRS
如果您的应用程序之外有静态文件,则可以使用附加设置。
您可以运行manage.py collectstatic
让 Django 遍历您的所有应用程序,找到所有静态文件,并将它们复制到/path/to/my/project/collected-static-files
(这就是为什么该设置是文件系统路径的原因。)
您可以{{ STATIC_URL }}
在模板中使用来访问文件。
通过 HTTP 提供静态文件
在开发模式下,在开发服务器下,Django 会自动提供目录外的STATIC_ROOT
文件。
基本上,Django 将为表单的 URL 添加一个 URL 处理程序
/static/some-dir/some-file-name
并从您的硬盘驱动器、文件系统路径提供内容
/path/to/my/project/collected-static-files/some-dir/some-file-name
在生产中,这不会自动发生,因此您必须配置您的 Web 服务器来执行相同的操作。(通过 Django 的完整处理管道运行所有静态文件并不是一个好主意。Web 服务器可以更有效地执行此操作)