django的静态文件(六)

我们已经构建了一个经过测试的web-poll测验应用程序,现在我们将添加一个样式表和一个图像。

除了由服务器生成的HTML之外,web应用程序通常需要提供额外的文件——比如图像、JavaScript或CSS——来呈现完整的web页面。在Django中,我们将这些文件称为“静态文件”

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

这就是 django.contrib.staticfiles 是为了:它从你的每个应用程序(和你指定的任何其他地方)收集静态文件到一个可以很容易在生产中使用的位置。

定制你的应用的外观和感觉

  1. 首先,在您的polls 目录中创建一个名为 static 的目录。Django将在那里寻找静态文件,类似于Django如何在polls/templates中找到模板。

  2. Django的 STATICFILES_FINDERS 查找器设置包含一个查找器列表,它知道如何从各种来源发现静态文件。其中一个默认值是AppDirectoriesFinder,它在每个INSTALL_APPS中寻找一个“static”子目录,就像我们刚刚创建的polls中的一个。管理站点为其静态文件使用相同的目录结构。

  3. 在您刚刚创建的 static目录中,创建另一个名为 polls 的目录,并在其中创建名为style.css 的文件。换句话说,样式表应该在 poll/stati/poll/style.css 中。由于AppDirectoriesFinder staticfile查找器的工作方式,您可以将Django中的静态文件称为polls/style.css,类似于你如何引用模板的路径。

image.png

静态文件命名空间

就像模板一样,我们可以通过将静态文件直接放在poll/static(而不是创建另一个polls子目录)中获得成功,但这实际上是一个坏主意。Django将选择它找到名称匹配的第一个静态文件,如果您在一个不同的应用程序中有一个同名的静态文件,Django将无法区分它们。我们需要能够将Django指向正确的位置,并且最简单的方法是通过命名空间来确保这一点。也就是说,将这些静态文件放到另一个以应用程序本身命名的目录中。

  • Put the following code in that stylesheet (polls/static/polls/style.css):

image.png

  • Next, add the following at the top of polls/templates/polls/index.html:
    image.png

The {% static %} template tag 生成静态文件的绝对URL。

这就是你为发展所需要做的。重新加载http://localhost:8000/polls/ 您应该看到问题链接是绿色的(Django style!),这意味着样式表被正确加载。
image.png

添加一个背景图像

接下来,我们将为 图片创建一个子目录。在polls/stati/poll/目录中创建一个image子目录。在这个目录中,放置一个名为background.gif图像。换句话说,把你的图像放在polls/static/polls/images/background.gif

然后,添加到样式表(polls/stati/poll/style.css):
image.png

警告

当然, {% static %} 模板标签在静态文件中是不可用的,比如样式表不是Django生成的。您应该始终使用相对路径来链接彼此之间的静态文件,因为这样您就可以更改 STATIC_URL(静态模板标记用于生成url),而不必在静态文件中修改许多路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值