10

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

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

我不知道这是为什么。

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

4

1 回答 1

19

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

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

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

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

ps 这可能是您感兴趣的。

于 2013-02-15T03:02:51.270 回答