Django的静态资源

如果你的静态资源是某个APP专属,那么就在这个APP目录下建立一个static目录,就像上图report这个APP中的static目录。当浏览这个APP的网页时它会从这里去找资源,当然,它首先会从共用静态资源目录里去找我这里是commonstatic目录。如果找不到就去APP的static目录找。

关于STATIC_URL的说明:这个就是表示访问静态资源的URL是啥,这里定义的是/static/,其实你改成/statics/也是一样的或者直接指定一个具体的ULR比如https://static.xxx.com/。这个相当于是STATIC_ROOT目录的别名。当settings.py中的DEBUG=True的时候,你的静态资源都是Django来帮你代理的,所以你可以访问到静态资源。

关于STATIC_ROOT这个东西的说明:

这个目录名字也可以自定义但是要和配置中的名称一致。这个目录里面的东西不是你放进去的,而是运行collectstatic命令(python manage.py collectstatic)它自动收集进去的,它会把各个APP下面的static和共用static都收集进去,这个目录的作用是干嘛的呢?就是在有反向代理的时候用到,通过Nginx访问,你的URL是http://xxx.xxx.xxx/static/js/xxx.js这个它访问的是/static/这个location,那么通过Nginx你可以设置这样一个location,然后对应到实际的磁盘路径。

但是你不想让Nginx帮你处理静态资源那你就只能把settings.py文件中的DEBUG=True,因为生产中该值是False,当为False的时候Django不会帮你去代理静态资源,所以你通过Nginx默认是访问不到静态资源的,你只有把收集起来的静态资源拷贝到Nginx服务器上通过location的设定来访问。

collectstatic命令:它会把在STATICFILES_DIRS里定义的以及APP里面的static目录里的静态文件收集到STATIC_ROOT指定的 目录里。

资源查找顺序:
这里是Django的查找顺序,你部署Nginx代理属于另外的情况。

Django的查找顺序是先从公共目录里也就是STATICFILES_DIRS里面找,然后再去APP下面的static目录找。你要不信可以做个实验资源名相同但是内容不同你看看先找哪一个。

资源如何访问:

 

posted @ 2018-09-12 17:05  昀溪  阅读(1211)  评论(0编辑  收藏  举报