python中的STATIC_URL、STATICFILES_DIRS、STATIC_ROOT的区别

再讲它们三个的区别之前,先说一下在python的web项目中静态资源文件一般放在哪里。

静态资源文件一般放的位置有两种:

1、在每个app里面新建一个static文件夹,将静态文件放到里面,在加载静态文件时,比如要在模板中用到静态文件,django会根据模板中配置的静态文件的路径自动在每个app里面的static文件夹里搜索。Django的STATICFILES_FINDERS设置项中包含一个查找器列表,它们知道如何从各种源中找到静态文件。 其中一个默认的查找器是AppDirectoriesFinder,它在每个INSTALLED_APPS下查找static子目录。所以,不要把static文件夹的名字写错, 否则django就找不到你的文件夹了。

2、在所有的app外面,也就是和app同级目录下,建立一个公共的文件夹, 因为有些静态文件不是某个app独有的,那么就可以把它放到一个公共文件夹里面,方便管理。注意,建立一个公共的静态文件的文件夹只是一种易于管理的做法,不是必须的;因为app是可以跨app应用静态文件的,因为最后所有的静态文件都会在STATIC_ROOT里面存在。

一:STATIC_URL:指出浏览器访问静态资源的“根路径”。

(1)在图1配置的情况下,从浏览器访问项目中的静态资源时,图2中的“根路径”就是STATIC_URL指定的字符串;

(2)Django会根据“根路径”后面的路径从项目中的“公共的静态文件的文件夹”中和每个APP里的static文件夹中去查找静态资源,然后返回给浏览器显示。

(3)为了兼容性,在模板中配置静态资源文件时,可以用STATIC_URL来替代配置的staticss,如下<img src="{{STATIC_URL}}1.jpg " />

二:STATICFILES_DIRS:告诉Django哪个目录是“公共的静态文件的文件夹”。

(1)开篇已经讲述了静态文件一般放置的两个地方,第一:静态文件放置在每个APP里的位置和静态文件所在文件夹名字都是规定好的;第二:那现在的问题就是如何让django知道哪个文件夹是“公共的静态文件的文件夹”,也就是你把一些静态文件放到app以外的哪个公共文件夹中;这就需要配置STATICFILES_DIRS了,如上图。

(2)STATICFILES_DIRS告诉django,首先到STATICFILES_DIRS里面寻找静态文件,其次再到各个app的static文件夹里面找。注意, django查找静态文件是惰性查找,查找到第一个,就停止查找了,所以是有优先级的。

(3)设置STATICFILES_DIRS之后,需要在settings.py中2个地方进行如下设置,否则会发生取不到资源的错误:

       【1】. INSTALLED_APPS 中,加入 'django.contrib.staticfiles'

       【2】. TEMPLATES 中,context_processors中,加入django.template.context_processors.static

三:STATIC_ROOT:后期再补充

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值