django中静态文件配置static的方法
环境
- centos7
- django1.11
- nginx
白话
我们可以使用Template设置我们的网页,同时,一个完美的网页需要css,js,image等静态文件的支持。
django中配置方式貌似有不少总,因为很多相关的博客写的方式并不一致,当然这可能是django的版本不同导致的。
当我们在一个项目下创建一个app后,我们就需要为该app下创建一个static文件夹来存放相关静态资源。
但创建了多个app后,就需要在多个app下创建static。
这样引入了一个问题,因为,我们的可能用了同一个js文件。分别存放显然是浪费加载时间。
于是在实际部署的时候,我们会将不同app下的static文件放到一个“合适”的地方。提高资源加载速度,同时也方便管理。
好了,大概就是这个思路,我们下面介绍如何配置
配置
stepone
--app --migrations --static --css --js --image --templates --__init__.py ...
文件结构如上所示,注意,我这里只展示了某app下的结构,而不是整个项目结构,可能你的没有templates这个文件夹,这不要紧,这个是我创建的。
我们最好在static下分类好不同文件夹css,js,image.(这是推荐的做法)
多个app时,我们就在不同的app下创建static。(后面我们在讲更合理的方法,这里需要这样做为了你理清步骤)
steptwo
在settings.py中的STATIC_URL='/static/'后面添加
STATIC_ROOT=os.path.join(BASE_DIR,'static')
这个STATIC_ROOT就是我们最终部署时候需要使用的,解决资源分散的问题。
BASE_DIR这个变量在settings.py的开始部分被定义,就是项目根目录的目录名。
os.path.join方法,在项目根目录下新建一个static文件夹。
我看到很多博客这里配置的很多,很乱,让人摸不着头脑。
这个地方完全可以这样配置,加载我们的静态资源。(信我,我可是被很多不负责任的博客坑惨了)
stepthree
创建文件夹完,配置文件这两步都完成后,我们需要的就是把他放到网页中显示。
在app下新建一个templates,如果有就不用创建
--app --migrations --static --templates --appname --index.html --__init__.py ...
大家注意,我并没有直接在templates下直接创建index.html,而是创建了一个”appname”(就根据你的app来命名这样不会冲突)。并在appname下创建的index.html。
因为django去找template的时候是吧app下的templates,存为一个list。如果我们多个app,就可能导致,想访问app2的index,结果却返回了app1的index.html。
index.html内容
{%loadstatic%}#这个地方引入static这个文件Title #http://dh.wk163.com{%static"image/logo.png"%}表示路径