django官方demo翻译简化版 六
在前面的部分中,我们已经给poll项目创建了测试,现在我们给这个项目增加图片及样式。
服务端除了提供HTML文件以外,pc端应用还需要提供对一些别的文件的支持-比如图片,JavaScript脚本,CSS样式等等这些完善html页面的必要文件。在django中,我们把这些文件称为静态文件。
对于小型项目来说,这并不是一个问题,因为你可以在把这些文件放到服务器上任何你可以找到的地方。但是对于大型,复杂的项目来说,这种方式就比较难搞了。
django提供了django.contrib.staticfiles来处理这个问题:它会从项目里的每个app下收集静态文件,放到一个很容易被调用的地方。
自定义你的app的外观
首先在你的polls目录下创建一个叫做static的目录。django将会在这里面寻找需要的静态文件,就和前面我们寻找模板一样。
django的配置项STATICFILES_FINDERS提供了很多查找器去从django的项目资源中去获取静态文件。默认是使用AppDirectoriesFinder去INSTALLED_APPS下寻找名为static的子目录。管理页面也是为static使用相同的策略。
当static目录创建好后,在它下面新建一个polls目录,然后在这个目录下面新建一个style.css文件。那么现在你的样式脚本所在的目录应该是这样的polls/static/polls/style.css。由于AppDirectoriesFinder 查找静态资源的方式,那么你在django里使用静态文件时应该这么引用polls/style.css,就跟使用模板类似。
静态文件命名空间
就像模板一样,静态文件也有命名空间这个概念。django会匹配找到的第一个文件,假如有2个同名的,那么就不确定是否匹配到的是我们想要的。所以我们需要增加一个命名空间,也就是把静态文件放到以它的应用命名的目录下
把下述代码放到stylesheet 文件里:
polls/static/polls/style.css
li a {
color: green;
}
Next, add the following at the top of pol
现在在 polls/templates/polls/index.html顶部增加如下代码:
polls/templates/polls/index.html {% load static %} <link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}">
{% static %}代表加载静态文件的绝对URL路径。
然后重启应用,查看效果。
增加背景图片
现在在polls/static/polls/目录下增加一个子目录images。在这个目录下,我们放一个图片background.gif.也就是图片的路径是这样的polls/static/polls/images/background.gif。
然后修改style.css文件:
polls/static/polls/style.css body { background: white url("images/background.gif") no-repeat; }
然后重启应用,访问http://localhost:8000/polls/ 查看效果。
注意
当然{% static %}这个标签在处理非django的静态文件的时候并不是一直有效的。你应该使用相对路径,因为这样的话你可以很轻松的改变 STATIC_URL的路径而不用去修改你已经引用的静态文件url。
浙公网安备 33010602011771号