当前位置:   article > 正文

Django STATIC_ROOT和STATICFILES_DIRS

static_root和staticfiles_dirs

1、STATIC_URL = ‘/static/’

通过我多次试验,我得出的结论是,这个STATIC_URL = ‘/static/’,实际就是访问静态文件的路由地址,比如:127.0.0.1:8000/static/…,在127.0.0.1:8000/后面加静态文件的路径,这个多数用在模板templates那块

2、STATICFILES_DIRS = (os.path.join(BASE_DIR,‘static’),)

直接上代码:

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

# 这个我感觉主要是用在templates中
# STATIC_URL = '/static/'	  # debug=true使用
STATIC_URL = '/staticfiles/'  # debug=False使用

# BASE_DIR 是项目的绝对地址
# 我们通常用的static,用来放静态js,css文件,同样也可以放一些图
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),) 

# 生产环境时,使用这个,就是setting.py文件最开头那块 Debug = False
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

注意:开发模式 Debug=True,使用STATICFILES_DIRS,这个时候Django会
自动去找静态文件的地址
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

3、STATIC_ROOT = os.path.join(BASE_DIR, ‘staticfiles’)

生产模式下使用这个,Debug=False

2、在配置好setting.py以后,还要对项目文件下的 url.py 进行设置,
加上下面这个,注意不要加错位置,
setting.py 与 urls.py 是在同一个文件下

from django.views.static import serve

url(r'^staticfiles/(?P<path>.*)$',serve, {'document_root': settings.STATIC_ROOT}),

注意:生产模式 Debug=False,Django不会找静态文件的位置
如果使用,请在项目文件下的终端输入 python3 manage.py collectstatic 
项目下,所有的静态文件都会合并在 STATIC_ROOT 下的 staticfiles 里面
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

4、HTML模板内 load staticfiles

{% load static %}

# 这里的static,其实就是 STATIC_URL,我这qrcode_img,是视图函数render来的值
# 我测试了很多遍,最后发现 好像不写{% load static %}也可以,感觉是因为我在settings里面的urls,写了url(r'^staticfiles/(?P<path>.*)$',serve, {'document_root': settings.STATIC_ROOT}),这个缘故,这个是在Debug=False环境下!!!
<img src="{% static qrcode_img %}">

<script src="/staticfiles/js/jquery-1.11.3.js"></script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

总结

第一种模式(正式上线 Debug=False)

1、改变settings里面的Debug=False,STATIC_URL = ‘/staticfiles/’,加上STATIC_ROOT = os.path.join(BASE_DIR, ‘staticfiles’)
2、在settings同文件下,有一个urls,里面加上url(r’^staticfiles/(?P .*)$’,serve, {‘document_root’: settings.STATIC_ROOT}),
3、模板里面templates就参考上面说的

第二种模式(开发模式 Debug=True)

1、settings里面的Debug=Ture,STATIC_URL = ‘/static/’
然后就没有了,直接可以访问到static静态文件

参考链接

1、https://blog.csdn.net/ssjdoudou/article/details/95523258?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

2、https://blog.csdn.net/qq_40923413/article/details/100526091

3、https://blog.csdn.net/lidysun/article/details/83784300

4、https://blog.csdn.net/jackliu16/article/details/78861934


个人万能小记:

settings:

STATIC_URL = '/static/'

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

# STATIC_ROOT = os.path.join(BASE_DIR, 'static')    # 生产环境
  • 1
  • 2
  • 3
  • 4
  • 5

urls:

from django.views.static import serve
from greentransport import settings # 项目的settings

url(r'^static/(?P<path>.*)$',serve, {'document_root': settings.STATIC_ROOT})
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/489559
推荐阅读
相关标签
  

闽ICP备14008679号