Django - 模板系统
-
简述
Django 使分离 python 和 HTML 成为可能,python 进入视图,HTML 进入模板。为了将两者联系起来,Django 依赖于渲染函数和 Django 模板语言。 -
渲染函数
该函数采用三个参数 --
Request− 初始请求。
-
The path to the template- 这是与项目 settings.py 变量中的 TEMPLATE_DIRS 选项相关的路径。
-
Dictionary of parameters− 包含模板中所需的所有变量的字典。可以创建此变量,也可以使用 locals() 传递视图中声明的所有局部变量。
-
-
Django 模板语言 (DTL)
Django 的模板引擎提供了一种迷你语言来定义应用程序的面向用户的层。显示变量
变量如下所示:{{variable}}。模板在渲染函数的第三个参数中用视图发送的变量替换变量。让我们更改 hello.html 以显示今天的日期 -hello.html然后我们的视图将变为 -访问 URL/myapp/hello 后,我们现在将得到以下输出 -您可能已经注意到,如果变量不是字符串,Django 将使用 __str__ 方法来显示它;并且使用相同的原理,您可以像在 Python 中一样访问对象属性。例如:如果我们想显示日期年份,我的变量将是:{{today.year}}。 -
过滤器
它们帮助您在显示时修改变量。过滤器结构如下所示:{{var|filters}}。Some examples−-
{{string|truncatewords:80}}− 此过滤器将截断字符串,因此您只会看到前 80 个单词。
-
{{string|lower}}− 将字符串转换为小写。
-
{{string|escape|linebreaks}}− 转义字符串内容,然后将换行符转换为标签。
您还可以为变量设置默认值。 -
-
标签
标签允许您执行以下操作:if 条件、for 循环、模板继承等。if 标签
就像在 Python 中一样,您可以在模板中使用 if、else 和 elif -在这个新模板中,根据一天中的日期,模板会呈现一定的值。for 标签
就像'if'一样,我们有'for'标签,它的工作方式与Python中的完全一样。让我们更改我们的 hello 视图以将列表传输到我们的模板 -使用 {{ for }} 显示该列表的模板 -我们应该得到类似的东西 -阻止和扩展标签
没有模板继承,模板系统就不可能完整。这意味着当您设计模板时,您应该有一个带有孔的主模板,子模板将根据他自己的需要填充,就像一个页面可能需要一个特殊的 css 用于选定的选项卡。让我们将 hello.html 模板更改为从 main_template.html 继承。main_template.htmlhello.html在上面的示例中,在调用 /myapp/hello 时,我们仍然会得到与以前相同的结果,但现在我们依靠扩展和块来重构我们的代码 -在 main_template.html 我们使用标签块定义块。标题块将包含页面标题,内容块将包含页面主要内容。在 home.html 中,我们使用 extends 从 main_template.html 继承,然后我们填充上面的块定义(内容和标题)。注释标签
注释标签有助于将注释定义到模板中,而不是 HTML 注释,它们不会出现在 HTML 页面中。它可用于文档或仅注释一行代码。