我正在学习如何在 Django 框架中开发网站。
我对模板 html 文件有一些不明白的地方。
我看到教程使用了大括号(<% if ... %> <% endif %>
等)将逻辑嵌入到代码中。但是当我尝试在非 Django 服务器(Apache)中使用此语法时,此语法未被解释,我可以看到我的<% if ... %>
...就在我的页面上。
我不知道这是为什么。
那么这个语法不是 HTML 的一部分,而是 Django 的一部分,因此它可以被 Django 解释?
首先也是最重要的,Django 模板语言的正确标签是{% %}
, 并不是<? ?>
.
你是对的,这是 Django 的一部分。这是一个例子领域特定语言 http://en.wikipedia.org/wiki/Domain-specific_language,正如维基百科所说,这是一种为特定任务而发明的语言。在这种情况下,Django 模板语言是为了处理模板而构建的。
它之所以有效是因为 Django 附带了一个parser http://en.wikipedia.org/wiki/Parsing#Programming_languages解释语言并理解它。解析器采用在 HTML 或任何其他语言中可能没有意义的字符串(例如 {% block Pasta %})并将其转换为有意义的内容。在这种情况下,它最终输出 HTML。
您可以用任何语言编写自己的解析器来解释 Django 模板语言,甚至完全编写一种新语言。但是,随着您的语言变得更加复杂,此类任务的难度也会增加,并且还取决于您选择的语言。 PHP 的解析能力是出了名的差,而 Perl 等其他语言则更擅长解析。一般来说,更容易并使用预先构建的解析器而不是重新发明轮子。虽然这当然是一种不太有趣的方式:)
附注您可能对此感兴趣。 https://github.com/django/django/blob/master/django/template/__init__.py
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)