Django的STATIC_URL与STATIC_ROOT与STATICFILES_DIRS详解

涉及到的名词

  1. setting.py中的STATIC_URLSTATIC_ROOTSTATICFILES_DIRS

他们都是存放静态资源的地方

  1. template模板中 staticstaticfiles

一、 setting.py

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "commonStatic/")
]
STATIC_ROOT = 'assert'

STATIC_URL是在某个具体的App下新建static目录,用来存放与App相关的静态资源。
STATICFILES_DIRS是在项目目录下新建commomStatic目录,用来存放多个App之间公共的静态资源。
STATIC_ROOT是项目部署的时候才会用到的,是配合Nginx使用的。他的作用就是收集(复制)每个App下static中静态资源以及项目commonStatic中的静态资源到STATIC_ROOT对应的assert文件夹中。使用python manage.py collectstatic来做这一步操作。所以STATIC_ROOT 与 STATICFILES_DIRS的路径不能重复。

二、template中{%load static%} 与 {%load staticfiles%}

{%load static%} 无论是STATIC_URL引入的静态资源,还是STATICFILES_DIRS引入的静态资源,在html模板中使用的时候, 路径都为static。
staticfiles 是早先版本为了处理非本地存储资源。

在Django 1.10之前:staticfiles加载一个模板标签,可以管理静态不能(或不容易)的非本地存储;
来自Django 1.10:contrib.staticfiles应用程序仍然存在但其模板标签将被删除只有{%static%}模板标签保留;
从Django 2.0(我相信):{%load staticfiles%}被删除.

that's all!

你可能感兴趣的:(Django的STATIC_URL与STATIC_ROOT与STATICFILES_DIRS详解)