【问题标题】:What dose the curly-brace and percent sign mean in html?html中的大括号和百分号是什么意思?
【发布时间】:2013-01-31 00:11:01
【问题描述】:

我正在学习如何在 Django 框架中开发网站。 模板 html 文件有一些我不明白的地方。

我看到教程使用花括号(<% if ... %> <% endif %> 等)在代码中嵌入逻辑。但是当我尝试在非 Django 服务器(Apache)中使用这种语法时,这种语法没有被解释,我可以在我的页面上看到我的 <% if ... %> ...。

我不知道这是为什么。

所以这个语法不是 HTML 的一部分,而是 Django 的一部分,所以它可以被它解释?

【问题讨论】:

  • @Mansfield php 代码?再试一次。
  • @Chris。哎呀 :( 我出于某种疯狂的原因想到了 smarty....
  • < / > 不是“花括号”; { / } 是“卷曲的”
  • <>called angle brackets or chevrons(适用于不知道如何搜索这些字符的人)。
  • (我没有足够的声誉来发表评论,所以我会发布一个答案。)正如所指出的,Django 使用 {% %}。您发布的尖括号 + 百分号 称为“Code Render Blocks”,由 ASP.NET 使用。希望这会有所帮助

标签: django html django-templates


【解决方案1】:

首先,Django 模板语言的正确标签是{% %},而不是<? ?>

你说得对,这是 Django 的一部分。这是domain specific language 的一个示例,正如维基百科所说,它是为特定任务发明的语言。在这种情况下,构建 Django 模板语言是为了处理模板。

它之所以有效,是因为 Django 带有 parser 来解释语言并理解它。解析器接受一个在 HTML 或任何其他语言中可能没有意义的字符串,例如 {% block Pasta %} 并将其转换为有意义的东西。在这种情况下,它最终会输出 HTML。

碰巧您可以用任何语言编写自己的解析器来解释 Django 模板语言,甚至完全编写一种新语言。但是,随着您的语言变得越来越复杂,此类任务的难度也会增加,并且还取决于您选择的语言。众所周知,PHP 不擅长解析,而众所周知,其他语言(如 Perl)更擅长解析。一般来说,只需 run a search 并使用预构建的解析器而不是重新发明轮子要容易得多。虽然这当然是一种不那么有趣的方式:)

p.s. This might be of interest to you.

【讨论】:

  • 真的,真的。但否则我的答案是正确的,是吗?我会向他添加一个注释,他上面使用的标签不太正确。
猜你喜欢
  • 2021-03-04
  • 2019-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
相关资源
最近更新 更多