在html中,花括号和百分号是什么意思?

时间:2013-02-15 02:43:24

标签: html django html5 django-templates

我正在学习如何在Django框架中开发网站。 关于模板html文件,我有些不明白的事情。

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

我不知道为什么会这样。

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

1 个答案:

答案 0 :(得分:16)

首先,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.