当前位置:   article > 正文

Django的STATIC_URL与STATIC_ROOT与STATICFILES_DIRS详解以及本地访问static图片资源

staticfiles_dirs

Django的STATIC_URL与STATIC_ROOT与STATICFILES_DIRS详解

#locate the common static files                   STATICFILES_DIRS的使用
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'common_static')
]
STATIC_DIRS = [
    BASE_DIR / 'common_static'
]

#the dir for command "python manage.py collectstatic"  STATIC_ROOT的使用
STATIC_ROOT = os.path.join(BASE_DIR, "static_dict")
STATIC_ROOT = BASE_DIR / 'static_dict'

# URL of browser accessing static file                STATIC_URL的使用 
STATIC_URL = '/static_dict/'
STATICFILES_DIRS
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

STATICFILES_DIRS作用

Django如果有多个App应用,可以把几个应用的静态文件放到一个公共的目录。
STATICFILES_DIRS就是设置这个共用目录的,让应用程序先到STATICFILES_DIRS设置的共用目录里查找,如果没找到再去STATIC_ROOT设置的目录查找。

1.调试环境下(DEBUG =True)

在开发阶段Django把/static 映射到django.contrib.staticfiles这个App,django.contrib.staticfiles自动地从STATICFILES_DIRS、STATIC_ROOT以及各个App的static子目录里面搜索静态文件。

2. 生产环境下(DEBUG =False)

一旦部署到开发环境上,settings.py不需要重新编写(因为进行了静态文件收集),只要在Nginx的配置文件里面写好映射,/static/将会被Nginx处理。当settings.DEBUG is False的时候,staticfiles将自动关闭。

STATIC_ROOT作用

是项目部署的时候才会用到的,是配合Nginx使用的。他的作用就是收集(复制)每个App下static中静态资源以及项目common_static中的静态资源到STATIC_ROOT对应的static_dict文件夹中(static_dict可以指定为其他名字,但是需要跟STATIC_URL相同)。使用python manage.py collectstatic来做这一步操作。所以STATIC_ROOT 与 STATICFILES_DIRS的路径不能重复。

STATIC_URL作用

Django通过STATIC_URL配置映射,让浏览器可以直接访问静态文件。

举例

STATIC_URL = '/static_dict/
# 项目名叫webproject,下面有个叫web的app

调试模式下
在浏览器上输入:
'http://127.0.0.1:8000/static_dict/images/1.png'
那么就相当与访问:(自动地从STATICFILES_DIRS、各个App的static子目录里面搜索静态文件。)
'/home/webproject/web/static/images/1.png'

生产模式下
在浏览器上输入:
'http://www.xxxxx.com/static_dict/images/1.png'
那么就相当与访问:(因为进行了静态文件收集,只会在STATIC_ROOT 中搜索文件)
'/www/webproject/web/static_dict/images/1.png'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

重点:想要本地访问static图片,方法如下:
1、DEBUG = True 保证在调试模式下
2、

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]
浏览器输入:
http://127.0.0.1:8000/static/031.png
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

STATIC_ROOT 与 STATICFILES_DIRS的路径不能重复。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/489477
推荐阅读
相关标签
  

闽ICP备14008679号