开始Django之旅-part6_静态文件

开始Django之旅-part6_静态文件

上一篇:开始Django之旅-part5_自动测试你的代码
下一篇:开始Django之旅-part7_自定义Django的管理页面

前言

上一篇我们接触了如何测试app,这篇我们添加一些样式表和图片。

除了服务器生成一些HTML文件,WEB的app也需要服务器额外的文件:例如图片,js,或者css——它们需要去渲染整个web页面。在Django中,我们把这些文件叫做“静态文件”。

对于小项目来说,没什么大不了,因为你可以保存这些文件到web服务器可以找到的某个地方。然而,在大一点的项目中——特别是包含很多的app——处理来自于每个app的多套静态文件,就很麻烦。

这就是django.contrib.staticfiles所要做的工作:它从你的每个app中(和其他你指定的地方)收集静态文件到一个有益于程序的位置。

自定义app的样式

首先,在polls目录下创建一个叫‘static’的目录。Django会在这里查询静态文件,就像Django在polls/templates/目录下找templates一样。

Django的STATICFILES_FINDERS包含一个知道如何从多种资源中查找静态外键的查询列表。默认的一个是AppDirectoriesFinder,它会在INSTALLED_APPS中设置的每个app的子目录下寻找静态目录。就像我们刚刚创建的polls那样。admin的地址也是使用同样的目录结构来装静态文件。

在static目录中,创建另一个目录叫做‘polls’,在static/polls里边创建一个文件叫style.css。你可以把在Django中的静态文件当做polls/style.css,因为,AppdirectoriesFinder静态文件找寻的工作方式类似于你引用templates的路径的方式。

静态文件命名空间:就像模板一样,我们可能放今天太文件到polls/static目录下就可以了(不是另外创建一个polls子目录下),但是它实际上是一个糟糕的想法。Django会选择它找到第一个名字匹配的静态文件,如果在其他app中也有一样名字的静态文件,Django就不能区分它们。我们需要给Django指出哪一个是对的,最好的方式就是给它们命名空间来确保正确性。这就需要另建一个以它们app命名的目录,将所有的静态文件放在这里。

拷贝下面的内容到polls/static/polls/style.css中:

li a {
    color: green;
}

打开polls/templates/polls/index.html,把下面的代码放在最上面:

{% load static %}

<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}">

{% load static %}模板标签生成了一个静态文件的完成路径。

这就是你所有要做的。启动服务器:

...\> py manage.py runserver

重新加载http://localhost:8000/polls/,你就会看到问题链接时绿色的,这就意味着你的样式表被加载了。

添加背景图片

下一步,我们会创建一个存放图片的子目录,在polls/static/polls/下创建一个’images’的子目录。在images下存放background.gif图片。

然后添加你下面的代码到polls/static/polls/style.css:

body {
    background: white url("images/background.gif") no-repeat;
}

重新加载http://localhost:8000/polls/,你会在屏幕的左上角看到一张背景图片。

警告:1.当然{% static %}模板标签并不适用于静态文件中,比如样式表,它并不是由Django生成的。2.你应该总是使用相对路径去互相链接静态文件,因为你可以只更改STATIC_URL(通常是由static模板标签生成它自己的路径),而不用更改在你的静态文件中大量的路径。

这些都是基础。想要看更多:the static files howto
the staticfiles referenceDeploy static files
讨论了如何在正式的服务器中使用静态文件。

上一篇:开始Django之旅-part5_自动测试你的代码
下一篇:开始Django之旅-part7_自定义Django的管理页面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值