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之有容乃大的list(2)
Sep 15 Python
python遍历类中所有成员的方法
Mar 18 Python
Django实现图片文字同时提交的方法
May 26 Python
python对json的相关操作实例详解
Jan 04 Python
机器学习python实战之决策树
Nov 01 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
Apr 22 Python
浅谈python日志的配置文件路径问题
Apr 28 Python
Python中logging.NullHandler 的使用教程
Nov 29 Python
python 判断字符串中是否含有汉字或非汉字的实例
Jul 15 Python
pytorch 模拟关系拟合——回归实例
Jan 14 Python
Python 读取有公式cell的结果内容实例方法
Feb 17 Python
appium+python自动化配置(adk、jdk、node.js)
Nov 17 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
PHP4之真OO
2006/10/09 PHP
PHP中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
php获取随机数组列表的方法
2014/11/13 PHP
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
js编写选项卡效果
2017/05/23 Javascript
深入理解Angular.JS中的Scope继承
2017/06/04 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
深入Python函数编程的一些特性
2015/04/13 Python
Selenium定位元素操作示例
2018/08/10 Python
Python global全局变量函数详解
2018/09/18 Python
python使用magic模块进行文件类型识别方法
2018/12/08 Python
对python中的argv和argc使用详解
2018/12/15 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
Python中base64与xml取值结合问题
2019/12/22 Python
python基于celery实现异步任务周期任务定时任务
2019/12/30 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
后备干部考察材料
2014/02/12 职场文书
大学同学聚会感言
2015/07/30 职场文书
《暗黑破坏神2:重制版》本周进行第一轮A测 目前可官网进行申请报名
2021/04/07 其他游戏
Django如何创作一个简单的最小程序
2021/05/12 Python