赞
踩
设置模板
我们需要一个地方放置模板。模板是静态文件,Django会在里面填充数据。为了使用那些文件,我们必须告诉Django在哪里可以找到它们。像Django的大多数组成部分一样,这项配置在项目的配置文件里面。在你执行startproject命令之后,你可在配置文件中找到一个叫TEMPLATES的小节。这个小节的内容像这样:配合渲染器使用模板
Django通过渲染模板的方式来构建用户界面。渲染的思想是通过动态数据结合静态模板文件来产生最终的输出。为了生成包含渲染输出的HttpResponse, 我们使用render函数。让我们看一个例子,这个模板可以是任何类型的纯文本文件。我们常用HTML来创建用户界面,因此我们常看到some_template.html,但是Django模板系统可以渲染任何类型的纯文本文件。
在渲染的过程中,Django使用上下文数据字典并以它的关键字作为模板中的变量名。由于特殊的双花括号语法,在上下文中模板的后端把{{ name }}替换为字面值“Johnny”。
模板实战
当使用模板时,我们把上下文数据插入到模板里各个占位符的位置。模板变量是使用上下文填充占位符最常见的形式。上节中我们展示了一个使用name变量的例子。上下文字典中包含一个name关键字,而双花括号{{ name }}代表name值应该展示在哪里。当上下文数据更加复杂时,我们也可以用点号获取。例如像这样的模板上下文:{{ address['street'] }}
)获取这个上下文数据。这时你应该用点号记法来获取字典中的数据。
更多关于上下文的内容
在整个模板的设置项中,我们没有详细讲解上下文处理器。上下文处理器是当模板被渲染时可以用来扩展上下文的有效方式。这是一组当你用Django的startproject命令时默认生成的上下文处理器配置。工具条
不要害怕去看项目依赖的源代码。记住你最喜欢的框架都是普通人写的。你可以从他们写的代码中学到有价值的东西。这些代码最开始可能看起来比较吓人,但是这没有捷径可走。上下文处理器的副作用是它们会对所有的请求都执行。如果你写了一个做大量计算运行缓慢的上下文处理器,每个请求都会受到这个性能的影响。所以,需要小心谨慎地使用上下文处理器。可复用的模板代码
现在让我们说说模板系统的一个强大特性:可复用的代码片段。想象一个网站,大部分的页面有相似的外观和感觉。他们通过重复大量相同的HTML实现,HTML是一种定义页面结构的超文本标记语言。这些页面使用相同的CSS(层叠样式表),层叠样式表是定义页面元素外观形状的样式。想象你被要求管理一个网站,并且你需要创建两个独立的页面。主页看起来像这样:better_styles.css新的
样式表怎么办?你需要在两个页面同时更新。现在想象你有2000个页面而不是两个页面,在这样一个网站快速地做大量修改几乎不可能。Django通过用几个标签帮助你完全避免这样的情形。让我们写一个取名base.html的新模板。
保持模板整洁。你可以将一个大模板拆分成多个更好管理的小片段。
在你网站的不同部分用其中某一个模板片段。你可能有一个模板片段可能只会在几个页面用。
模板的工具箱
Django的文档中包含大量可用于项目的内置标签。我们的内容无法覆盖所有这些标签,但是我将关注几个标签给你展示哪些东西是可用的。除了我们已经讲过的标签外,其中最常用的一个内置标签就是url标签。回忆那篇关于URLs的文章,通过reverse函数你可以将URL与一个命名视图联系起来。如果你想模板中用URL怎么办?你可以这样做:构建你自己的模板武器
当你需要构建你自己的模板标签或者过滤器时,Django给你提供了制作它们的工具。这里有三个主要的元素用来定制标签:在Django期望的地方定义你自己的标签。
在模板引擎中注册标签。
在模板中加载标签,这样它们可被用。
总结
现在我们已经学习了模板的实战!我们已经学习的以下内容:如何设置你网站的模板
从视图中调用模板的方法
如何使用数据
如何处理逻辑
可用于模板的内置标签和过滤器
使用你自己的代码扩展定制模板
英文原文:https://www.mattlayman.com/understand-django/templates-user-interfaces/ 译者:穆胜亮
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。