允许您评估模板中的表达式并相应地调整 HTML。像这样的行{% if 1 == 2 %}是完全有效的,尽管有点无用,因为它们每次都会计算出相同的结果。该if标签的亮点在于与视图传递到模板的数据进行交互时。考虑sidebar.html中的以下示例: 复制 请注意,默认情况下,整个用户对象都会传递到模板中,而无需我们在视图中指定 丹麦电话号码表 任何内容来实现这一点。这使我们能够访问用户的身份验证状态(或缺乏身份验证状态)、用户名和其他功能,包括遵循外键关系来访问存储在用户配置文件或其他连接模型中的数据,所有这些都来自 HTML 文件。
您可能担心此级别的访问可能会带来安全风险。但是,请记住,这些模板适用于服务器端渲染框架。构建页面后,标签已消耗掉自己并被纯 HTML 替换。因此,如果某个if语句在某些条件下将数据引入页面,但该数据未在给定实例中使用,则该数据根本不会发送到客户端,因为该语句是在服务器端评估的if。这意味着正确构建的模板是一种非常安全的方法,可以将敏感数据添加到页面,除非有必要,否则数据不会离开服务器。也就是说,使用 Django 模板并不能消除以安全、加密的方式传递敏感信息的需要,它只是意味着安全检查,以安全地发生在 HTML 中,因为它是在服务器端处理的。 此功能还有许多其他用例。例如,在一般产品主页中,您可能希望隐藏“注册”和“登录”按钮,并将其替换为登录用户的“退出”按钮。

另一个常见用途是显示和隐藏表单提交等操作的成功或错误消息。请注意,如果用户未登录,通常您不会隐藏整个页面。根据用户的身份验证状态更改整个网页的更好方法是在views.py 中的适当函数中处理它。 在 Smashing 杂志上做广告 过滤 # 视图的部分工作是为页面设置适当的数据格式。为了实现这一点,我们对标签进行了强大的扩展:过滤器。Django 中有许多过滤器可用于执行文本对齐、格式化日期和添加数字等操作。基本上,您可以将过滤器视为应用于标签中变量的函数。例如,我们希望我们的工资数字为。我们将使用过滤器来完成index.html中的工作: </td> 复制 管道字符是将命令|应用于变量的过滤器。“$”字符不是来自模板,对于像这样每次都会出现的元素,将其粘贴到标签之外会更容易请注意,这intcomma要求我们将其包含在i。
这是在提供的示例应用程序中为您完成的。# 使用 Jinja2 引擎进行服务器端渲染提供了创建干净、适应性强、响应灵敏的前端代码的关键工具。将页面分成文件允许 DRY 组件具有灵活的组合。标签提供了显示通过视图函数从数据库传递的数据的基本功能。如果做得好,这种方法可以提高网站的速度、SEO 功能、安全性和可用性,并且是 Django 和类似框架中编程的核心方面。