编写第一个django应用程序,第6部分

本教程从以下位置开始 Tutorial 5 停下来了。我们已经构建了一个经过测试的Web投票应用程序,现在我们将添加一个样式表和一个图像。

除了服务器生成的HTML之外,Web应用程序通常还需要提供呈现整个网页所需的其他文件,如图像、javascript或CSS。在Django中,我们将这些文件称为“静态文件”。

对于小型项目,这不是什么大问题,因为可以将静态文件保存在web服务器可以找到的地方。然而,在更大的项目中——尤其是那些由多个应用程序组成的项目——处理由每个应用程序提供的多组静态文件开始变得棘手起来。

就是这样 django.contrib.staticfiles 用于:它将静态文件从每个应用程序(以及您指定的任何其他位置)收集到一个可以在生产中轻松提供服务的位置。

从何处获得帮助:

如果您在阅读本教程时遇到困难,请转到 Getting Help 常见问题部分。

定制你的 应用程序的 观感

首先,创建一个名为 static 在你 polls 目录。Django将在那里查找静态文件,类似于Django在其中查找模板的方式。 polls/templates/ .

Django STATICFILES_FINDERS 设置包含知道如何从各种源发现静态文件的查找器列表。其中一个默认值是 AppDirectoriesFinder 它在每个 INSTALLED_APPS 就像里面的那个 polls 我们刚刚创造了。管理站点对其静态文件使用相同的目录结构。

static 您刚刚创建的目录,创建另一个名为 polls 在其中创建一个名为 style.css . 换句话说,样式表应该位于 polls/static/polls/style.css . 因为 AppDirectoriesFinder staticfile finder工作正常,您可以在Django中将此静态文件称为 polls/style.css ,类似于如何引用模板的路径。

静态文件名间距

就像模板一样,我们 可以 直接将静态文件放入 polls/static (而不是创造另一个 polls 子目录),但这实际上是一个坏主意。Django将选择它找到的第一个静态文件,如果在 不同的 应用程序,Django将无法区分它们。我们需要能够将Django指向正确的一个,确保这一点的最佳方法是 命名空间 他们。也就是说,通过将这些静态文件放入 另一个 为应用程序本身命名的目录。

在样式表中放入以下代码 (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" href="{% static 'polls/style.css' %}">

这个 {{% static %}} 模板标记生成静态文件的绝对URL。

这就是你为发展所需要做的一切。

启动服务器(如果服务器已经运行,则重新启动):

$ python manage.py runserver
...\> py manage.py runserver

再装填 http://localhost:8000/polls/ 你应该看到问题链接是绿色的( Django 风格!)这意味着样式表已正确加载。

添加背景图像

接下来,我们将为图像创建一个子目录。创建一个 images 子目录中的 polls/static/polls/ 目录。在此目录中,添加要用作背景的任何图像文件。出于本教程的目的,我们使用一个名为 background.png ,它将具有完整路径 polls/static/polls/images/background.png

然后,在样式表中添加对图像的引用 (polls/static/polls/style.css ):

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

再装填 http://localhost:8000/polls/ 你应该看到屏幕左上角加载的背景。

警告

这个 {{% static %}} template标记不可用于非Django生成的静态文件中,例如样式表。你应该一直使用 相对路径 在彼此之间链接静态文件,因为这样您就可以更改 STATIC_URL (由 static 模板标记来生成其URL),而不必修改静态文件中的一系列路径。

这些是 基础知识 . 有关框架中包含的设置和其他位的详细信息,请参阅 the static files howtothe staticfiles reference . Deploying static files 讨论如何在实际服务器上使用静态文件。

当您对静态文件感到满意时,请阅读 part 7 of this tutorial 了解如何自定义Django自动生成的管理网站。