编写你的第一个 Django app,第六部分(Page 11)转载请注明链接地址

本教程上接前面第五部分的教程。我们构建了一个经过测试的 web-poll应用,现在我们会添加一个样式表和一张图片。

除了服务器上生成的HTML,web应用一般需要其他文件 —— 例如图片,JavaScript,或CSS —— 渲染完整的web页面所必须的内容。在Django中,我们引用的这些文件称为“静态文件”。

对于小的项目,这没有什么大不了。因为你只要将这些静态文件保存到你的web服务器可以找到的地方就可以了。然而在比较大的项目中 —— 尤其有多个app组成的项目中 —— 处理多个应用提供的静态文件集合会变得很棘手。

这正是 django.contrib.staticfiles 的用途: 它从将每个应用收集到的静态文件集中到一个在生产环境中容易维护的单独的位置(意思就是把静态文件收集起来,放到一个指定的位置,这个位置为可以方便项目使用)。

自定义你的应用的外观

首先,在polls应用的目录下创建一个名为static目录。Django从这里查找静态文件,和Django在polls/templates/中查找模板一样。

Django 的设置包含一个查找器列表,它知道如何从多个源中发现静态文件。默认的一个是AppDirectoriesFinder,它会在每个中查找“static”子目录,就像查找我们刚刚在polls中创建的“static”一样。admin站点为它的静态文件使用相同的目录结构。

在你刚刚创建的static目录中,创建另外一个名字是polls的目录,并在它下面创建一个名字是 style.css 的文件。也就是说,你的样式表文件应该被放在 polls/static/polls/style.css。由于AppDirectoriesFinder静态文件查找器的工作方式,你可以在django中以polls/style.css的方式应用这个静态文件,与你引用模板的路径类似。

将下面的代码放入样式表中(polls/static/polls/style.css):

/* polls/static/polls/style.css */
li a {
color: green;
}

下一步,在polls/templates/polls/index.html顶部加入如下代码:

<!--polls/templates/polls/index.html-->
{% load static %} <link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}" />

{% static %}模板标签会生成静态文件的绝对路径。

这就是你在开发中需要做的所有事情。重新打开http://localhost:8000/polls/,你会看到question的链接是绿色的(django的样式),这表示你的样式表被正确的加载了。

添加一张背景图片

下一步,我们会为图片创建一个子目录。在polls/static/polls/目录创建一个images子目录。在这个目录里,放一张名字是background.gif的图片。也就是说,把你的图片放在polls/static/polls/images/background.gif

然后,把它添加到你的样式表中(polls/static/polls/images/background.gif):

/* polls/static/polls/style.css */
body {
background: white url("images/background.gif") no-repeat right bottom;
}

重新打开http://localhost:8000/polls/,你会看到在屏幕的右下角加载了一张背景图片。

这些都是基础知识,更多关于设置和其他细节的内容请查看 和 。 讨论如何在真是的服务器上使用静态文件。

如果你已经熟悉了静态文件,就可以开始学习下一节内容了:如何自定义django自动生成的admin站点(page 12)。

05-04 05:22