[学习:Django搭建个人博客 4]静态文件

469 阅读1分钟

管理静态文件(比如图片、JavaScript、CSS)

配置静态文件

  1. 确保 INSTALLED_APPS 包含了 django.contrib.staticfiles

  2. 在配置文件中,定义 STATIC_URL,例子:

STATIC_URL = '/static/'
  1. 在模板中,用 static 模板标签基于配置 STATICFILES_STORAGE 位给定的相对路径构建 URL。
{% load static %}
<img src="{% static 'my_app/example.jpg' %}" alt="My image">
  1. 将你的静态文件保存至应用目录中名为 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 提供了一个便利的管理命令,用于将静态文件收集至独立目录,方便你为它们提供服务。

  1. 将 STATIC_ROOT 配置成你喜欢的目录,在这个目录提供服务,例如:
STATIC_ROOT = "/var/www/example.com/static/"
  1. 运行 collectstatic 管理命令:
$ python manage.py collectstatic
  1. 选一个 Web 服务器,配置 Web 服务器,使其在 STATIC_URL 下为 STATIC_ROOT 目录下的文件提供静态文件服务。

文档 部署静态文件 介绍了静态文件的常见部署策略。