美文网首页
django的静态文件(六)

django的静态文件(六)

作者: Mlotjve | 来源:发表于2018-08-15 18:30 被阅读0次

    我们已经构建了一个经过测试的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),而不必在静态文件中修改许多路径。

    相关文章

      网友评论

          本文标题:django的静态文件(六)

          本文链接:https://www.haomeiwen.com/subject/iuiwbftx.html