管理静态文件(比如图片、JavaScript、CSS)
配置静态文件
-
确保
INSTALLED_APPS包含了django.contrib.staticfiles。 -
在配置文件中,定义
STATIC_URL,例子:
STATIC_URL = '/static/'
- 在模板中,用
static模板标签基于配置STATICFILES_STORAGE位给定的相对路径构建 URL。
{% load static %}
<img src="{% static 'my_app/example.jpg' %}" alt="My image">
- 将你的静态文件保存至应用目录中名为 static 的目录中。例如 my_app/static/my_app/example.jpg。
你的工程可能包含未与任何应用绑定的静态资源。除了在 apps 中使用 static/ 目录,你可以在配置文件中定义一个目录列表 (STATICFILES_DIRS) ,Django 会从中寻找静态文件。例子:
STATICFILES_DIRS = [ BASE_DIR / "static", '/var/www/static/', ]
为这些文件提供服务
除了这些配置步骤外,你还需要实际地为这些文件提供服务。
开发时,使用 django.contrib.staticfiles,这一般会在 DEBUG is set to True 情况下由 runserver 自动完成。
该方法 极度低效 且 不怎么安全,所以这 不适合生产环境。
部署
django.contrib.staticfiles 提供了一个便利的管理命令,用于将静态文件收集至独立目录,方便你为它们提供服务。
- 将 STATIC_ROOT 配置成你喜欢的目录,在这个目录提供服务,例如:
STATIC_ROOT = "/var/www/example.com/static/"
- 运行 collectstatic 管理命令:
$ python manage.py collectstatic
- 选一个 Web 服务器,配置 Web 服务器,使其在 STATIC_URL 下为 STATIC_ROOT 目录下的文件提供静态文件服务。
文档 部署静态文件 介绍了静态文件的常见部署策略。