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正则表达式re模块详解
Jun 25 Python
Python的Scrapy爬虫框架简单学习笔记
Jan 20 Python
Python中functools模块的常用函数解析
Jun 30 Python
利用python如何处理百万条数据(适用java新手)
Jun 06 Python
Python实现繁?转为简体的方法示例
Dec 18 Python
Django基础知识 URL路由系统详解
Jul 18 Python
通过 Python 和 OpenCV 实现目标数量监控
Jan 05 Python
Python-opencv 双线性插值实例
Jan 17 Python
pycharm设置python文件模板信息过程图解
Mar 10 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
May 13 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 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生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
php格式化日期实例分析
2014/11/12 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
JavaScript 放大镜 移动镜片效果代码
2011/05/09 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
Boostrap模态窗口的学习小结
2016/03/28 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
微信小程序开发探究
2016/12/27 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
Vuori官网:运动服装的终级表现
2021/01/27 全球购物
园林资料员岗位职责
2013/12/30 职场文书
初中美术教学反思
2014/01/29 职场文书
库房保管员岗位职责
2014/04/07 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL
python双向链表实例详解
2022/05/25 Python