django静态文件查找逻辑
最近被django的静态文件配置整疯了. 决定直捣黄龙,看看底层代码: 首先用manage finstatic xxxx.js 看看处理逻辑,发现主要在:C:\Python27\Lib\site-packages\django\contrib\staticfiles\finders.py中的find函数,如下:
调试进入:C:\Python27\Lib\site-packages\django\contrib\staticfiles\finders.py的FileSystemFinder类的find方法:
shit happens, 因为locations为空,所以找不到咯.那么它是怎么赋值的呢?如下:
结论,需要在settings.py中定义 STATICFILES_DIRS, 这样django就会知道去哪找了.而不是定义static_root, 如果你这么想,你跟我一样一厢情愿.这个变量是用来给manage collectstatic 用的.what a shit.
这个是project的查找逻辑.
那么对于app呢?默认去app下面的static_url定义的文件夹查找,so,you see? app中查找逻辑如下(先上面,后下面):
-----
对于app中的template中对静态资源的引用,方法如下:
some_template.html
{% load staticfiles %} {% static '资源相对于app/static的路径,不要以/打头'%}