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!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 项目部署到阿里云(nginx+uwsgi)上后,静态文件加载没有问题。但是在本地,使用开发服务器,却始终加载不成功...
    兰山小亭阅读 10,922评论 0 9
  • 处理静态文件,尤其是在开发时,是一件很头疼的事情。在这篇文章中,我们将会讨论一些设置,目录结构和他们之间的相互影响...
    51reboot阅读 5,636评论 0 1
  • ​ 一、各个路径文件夹的作用 1.STATIC_ROOT 是在部署的时候才发挥作用,执行 python manag...
    罗新禹阅读 4,714评论 2 1
  • 模板标签除了几个常用的,还真心没有仔细了解一下,看到2.0发布后,翻译学习一下。 本文尽量忠实原著,毕竟大神的东西...
    海明_fd17阅读 6,148评论 0 5
  • PythonWeb框架要点、Django介绍、工程搭建、配置、静态文件与路由 1.Python Web 框架要点 ...
    Cestine阅读 5,546评论 0 6