Django1.7.2配置静态文件

java农一枚,

最近在学Django这种搭建起来比较容易的web框架,用起来确实比java web搭建简单多了

虽然java web发展历史悠久,各种解决方案都比较齐全,但对于现在的网络,更多的是快速搭建中小型网站,这样,javaweb就显得太过笨重

回归正题,在Django1.7.2配置静态文件

Django是python web开发的一个很出名的框架,国内python web框架资料比较多,比较全面的也就它了,而且就连python的作者也推荐

静态文件,就是web中的图片,js文件,css文件等

一般这些文件都放指定的文件目录,而这些静态文件一般是不会有访问限制的

网上配置Django的静态文件一搜一大堆,但大多都是1.4版本的,比较旧,而且经过我的测试,很多都不起作用,

当中可能是版本问题,也可能是我配置的遗漏

所以,一般遇到这种情况,只能看官方的

官网配置静态文件链接:https://docs.djangoproject.com/en/dev/howto/static-files/

好,看了一下官网的配置,十分简单

1、在settings.py的INSTALLED_APPS配置django.contrib.staticfiles,像这样

2、在settings.py文件配置

STATIC_URL = '/static/'

 

3、在访问的页面配置

{% load staticfiles %}

<script type="text/javascript" src="{% static "js/jQuery-1.8.1.js" %}"></script>

 

4、在app下面建立static文件夹,将静态文件放里面,像这样

 

 

这样,就能访问静态文件了

 

根据上面的配置,我产生了好几个问题,经过自己的测试,都一一明了!

1、这样的配置,只能适用对用app的static文件夹,如果我有多个app,怎么办?因为一般来说,静态文件都是放在一个公共文件夹里面进行访问,

如果比较大型的网站,也有对应的web服务器来分担,这个就令到别论了

那我们怎么配置一个公共的静态文件夹呢?

只要在settings.py文件加上,STATICFILES_DIRS,像这样

STATICFILES_DIRS是一个元组,里面填写的是路径,路径最好用绝对路径

 

2、settings.py的STATIC_URL = '/static/'能否不用static,而用其他?

可以的,STATIC_URL = '/ssss/'

我这里将static改成ssss

那么访问我的页面也是能引入静态文件(这里我的静态文件是jQUery1.8.1)

 

上图可以看出,其实访问静态文件的url是/ssss/js/jQuery-1.8.1.js

也就是说STATIC_URL = '/ssss/'就是把

页面的

<script type="text/javascript" src="{% static "js/jQuery-1.8.1.js" %}"></script>

的static替换成'/ssss/'

其实,我们直接访问http://localhost:8000/ssss/js/jQuery-1.8.1.js也能访问到这个jQuery文件

 

 

 

那么,页面的

{% load staticfiles %}

<script type="text/javascript" src="{% static "js/jQuery-1.8.1.js" %}"></script>

这两句,{% load staticfiles %}能否省略?

答案是不能,如果省略,访问会报错,报错信息如下

可以看出来,缺少{% load staticfiles %}是不能解析页面staitc这个关键字,

当然static这个关键字也是不能用其他字符替换,否则也会报错,这里我就不贴具体报错信息了

 

3、STATICFILES_DIRS配置多个路径的时候,而这些路径都有相同一个js或者css等静态文件,或加载哪一个?

经我测试,大概静态文件加载的逻辑是这样,

先根据元组的顺序遍历所有路由,如果静态文件在其中一个路径下找到,而后面的路径相同的静态文件是不会再次加载的,

 

4、settings.py中INSTALLED_APPS的django.contrib.staticfiles必须配置

属性STATIC_URL,如果添加了django.contrib.staticfiles,而缺少STATIC_URL,就会报如下错:

 

看报错信息就知道,必须配置STATIC_URL

 

到此,配置Django静态文件就到这

 

本博完~~~

 

 

原文地址:https://www.cnblogs.com/ForeVerWater/p/4231860.html