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

# the settings above
# STATIC SETTINGS
STATIC_URL = '/static/'
# BASE_DIR 是项目的绝对地址

STATIC_ROOT=os.path.join(BASE_DIR,"static/")#错误
STATIC_ROOT=os.path.join(BASE_DIR,"/static/")#正确

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
1
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/'
1
那么可以在浏览器上输入:
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
---------------------
作者:吕秀军
来源:CSDN
原文:https://blog.csdn.net/jj546630576/article/details/78606531
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/ameile/p/10076851.html

Django的STATIC_ROOT和STATIC_URL以及STATICFILES_DIRS相关推荐

  1. static的动态性:STATIC_URL和STATICFILES_DIRS的关系

    django我学到静态文件这块时,要使用静态文件,我们必须要去配置这两个东西: STATIC_URL = '/static/' STATICFILES_DIRS = (os.path.join(BAS ...

  2. uwsgi+nginx部署django项目(有图原理的详细展示的)

    1. 概念解析(wsgi协议,uwsgi协议,uWSGI) 参考:https://www.cnblogs.com/wspblog/p/8575101.html 1.1 现实世界的web请求: 1.2  ...

  3. django的settings配置详解

    1.介绍 BASE_DIR  默认值:os.path.dirname(os.path.dirname(os.path.abspath(__file__))). 这个是Django项目文件夹所在目录得绝 ...

  4. STATIC_URL/STATIC_ROOT/STATICFILES_DIRS/urls.py中的static区别

    工程名字是: mysite 变量 修改位置 STATIC_URL mysite/settings.py STATIC_ROOT  mysite/settings.py STATICFILES_DIRS ...

  5. Django的MEDIA_ROOT和STATIC_ROOT

    在水木的Python版问了一下,MEDIA_ROOT主要是用来放置上传的文件.Django的ORM有个特殊的字段叫做FileField是用来存储文件的.不过实际上并不会把文件内容存到数据库里面--因为 ...

  6. 各种 django 静态文件的配置总结【待续】

    2019独角兽企业重金招聘Python工程师标准>>> 最近在学习django框架的使用,想引用静态css文件,怎么都引用不到,从网搜了好多,大多因为版本问题, 和我现在的使用的da ...

  7. django 快速实现文件上传

    对于web开来说,用户登陆.注册.文件上传等是最基础的功能,针对不同的web框架,相关的文章非常多,但搜索之后发现大多都不具有完整性,对于想学习web开发的新手来说就没办法一步一步的操作练习:对于we ...

  8. Django实战之美化页面

    书接https://blog.csdn.net/weixin_32759777/article/details/104352341 美化是增加样式而已 增加themes目录 在正式套静态页面之前,先调 ...

  9. Django 无法加载静态文件(js,css,image)解决办法

    Django 无法加载静态文件(js,css,image)解决办法 按照这个配置成功: https://jingyan.baidu.com/article/8cdccae92ffc16315413cd ...

最新文章

  1. MongoDB update修改器: 针对Fields的$修改器 $inc $set $unset
  2. Jquery中使用ajax请求SSM后台时提示:org.springframework.http.converter.HttpMessageNotReadableException: Could no
  3. [C++调试笔记]define.h
  4. Ribbon 与 Nginx 区别
  5. 1000层的Transformer,诞生了!
  6. android 调用 asp.net web api,从 .NET 客户端调用 Web API (C#)
  7. factorybean 代理类不能按照类型注入_快速理解Spring中的FactoryBean接口
  8. pandas入门学习
  9. 2017java面试_2017 Java面试大全(一)
  10. CTF攻防世界刷题51-
  11. 安利几个优秀的开源电商系统
  12. TFS2010安装与管理
  13. java连接HDFS+Kerberos配置参数示例
  14. 初探OAuth2.0第三方认证登录
  15. python用turtle画四叶草_pythonturtle工具绘制四叶草的实例分享 | 学步园
  16. 有零基础开始学习python的小伙伴吗?学起来难吗?
  17. Android长度单位详解
  18. 【转载】谈SCI、EI、ISTP三大索引收录号的检索
  19. 局域网访问互联网配置教程
  20. 什么是POP3,SMTP和IMAP?

热门文章

  1. mac os 开启redis_高并发大流量,总会想到它!来一起通过docker搭建redis集群
  2. 帆软日期控件变灰_数据分析插件FineReport中日期控件如何校验JS
  3. php网站跨站脚本监测,基于PHP的在线跨站脚本检测工具.pdf
  4. RTX5 | 配置文件RTX_Config.h(二)
  5. HTTP笔记-浏览器是如何识别点击的链接是下载文件还是展示页面
  6. 信息安全工程师笔记-网络攻击常见技术
  7. C++ STL 乱序算法
  8. 图像滤波与滤波器基础知识
  9. linux下网络编程设置非阻塞,UNIX网络编程 非阻塞connect的实现
  10. java 0xf0_java 中类似js encodeURIComponent 函数的实现案例