Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析


Posted in Python onMay 08, 2018

前言

本文主要给大家介绍关于Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

详细如下:

首先,我们配置静态文件,要在setting.py里面加入如下几行代码:

settings.py

# the settings above
# STATIC SETTINGS
STATIC_URL = '/static/'
# BASE_DIR 是项目的绝对地址
STATIC_ROOT = os.path.join(BASE_DIR, 'collect_static')
#以下不是必须的
STATICFILES_DIRS = (
 os.path.join(BASE_DIR, 'common_static'),
)

1.STATIC_ROOT

STATIC_ROOT 是在部署静态文件时(pyhtonmanage.pycollectstatic)所有的静态文静聚合的目录,STATIC_ROOT要写成绝对地址,在这里,比如我的项目mysite是/home/mysite/

那么STATIC_ROOT 为 /home/mysite/collect_static/

当部署项目时,在终端输入:

python manage.py collectstatic

django会把所有的static文件都复制到STATIC_ROOT文件夹下

2.STATICFILES_DIRS

STATIC_ROOT 是在部署的时候才发挥作用, 而实际情况下,静态文件的一般安放位置有两种:

1.一种就是在每个app里面新建一个static文件夹,将静态文件放到里面,在加载静态文件时,比如要在模板中用到静态文件,django会自动在每个app里面搜索static文件夹(所以,不要把文件夹的名字写错哦, 否则django就找不到你的文件夹了)

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

那现在的问题是如何让django知道你把一些静态文件放到app以外的公共文件夹中呢,那就需要配置STATICFILES_DIRS了

STATICFILES_DIRS = (
 os.path.join(BASE_DIR, 'common_static'),
)

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

3.STATIC_URL

那么到此为止,静态文件的机制就可以运作了,但是有一个问题,我能不能通过url直接访问我在项目中的静态文件呢,答案肯定是啦,但是,注意,你是在浏览器是访问,你不可能输入你的静态文件的本地绝对地址吧,比如我的一种图片的本地地址

为 /home/mysite/common_static/myapp/photo.png

那么别人不可能在浏览器上直接输入:

http://192.168.1.2:8000/home/mysite/common_static/myapp/photo.png

这样子,浏览器会报错, 没有该页面

那么django是如何让浏览器也可以访问服务器上的静态文件呢,前面已经说了,直接访问服务器本地的地址是不行的,那就需要一个映射,django利用STATIC_URL来让浏览器可以直接访问静态文件,比如:

STATIC_URL = '/static/'

那么可以在浏览器上输入:

http://192.168.1.2:8000/static/common_static/myapp/photo.png

那么就相当与访问/home/mysite/common_static/myap/photo.png

所以在浏览器上,利用前缀 STATIC_URL的具体内容,来映射STATIC_ROOT,
HTTP://192.168.1.2:8000/static 相当于 本地地址的STATIC_ROOT

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python实现的多线程同步与互斥锁功能示例
Nov 30 Python
Python语言描述最大连续子序列和
Dec 05 Python
python opencv人脸检测提取及保存方法
Aug 03 Python
python json.loads兼容单引号数据的方法
Dec 19 Python
python ---lambda匿名函数介绍
Mar 13 Python
Python3.4解释器用法简单示例
Mar 22 Python
python基于socket实现的UDP及TCP通讯功能示例
Nov 01 Python
python输出pdf文档的实例
Feb 13 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
Apr 16 Python
Python爬虫小例子——爬取51job发布的工作职位
Jul 10 Python
Pytorch实验常用代码段汇总
Nov 19 Python
一文搞懂如何实现Go 超时控制
Mar 30 Python
Django学习教程之静态文件的调用详解
May 08 #Python
Python实现计算圆周率π的值到任意位的方法示例
May 08 #Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
May 08 #Python
Python读写docx文件的方法
May 08 #Python
python docx 中文字体设置的操作方法
May 08 #Python
Python解析并读取PDF文件内容的方法
May 08 #Python
python-docx修改已存在的Word文档的表格的字体格式方法
May 08 #Python
You might like
php日期转时间戳,指定日期转换成时间戳
2012/07/17 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
PHP针对JSON操作实例分析
2015/01/12 PHP
PHP实现递归无限级分类
2015/10/22 PHP
PHP图片水印类的封装
2017/07/06 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
2010/07/26 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
2015/12/08 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
详解Python3.1版本带来的核心变化
2015/04/07 Python
使用Python编写一个在Linux下实现截图分享的脚本的教程
2015/04/24 Python
python中lambda与def用法对比实例分析
2015/04/30 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
python中reader的next用法
2018/07/24 Python
Python双向循环链表实现方法分析
2018/07/30 Python
Python命令行click参数用法解析
2019/12/19 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
2020版Python学习路线图(附学习资料)
2020/09/15 Python
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
最新党员思想汇报
2014/01/01 职场文书
作弊检讨书1000字
2014/02/01 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
幼儿园教师的考核评语
2014/04/18 职场文书
小班评语大全
2014/05/04 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
团队会宣传标语
2014/10/09 职场文书
入股协议书范本
2014/11/01 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书