首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

DojoX DTL 入门 -1 DojoX DTL 库简介

DojoX DTL 入门 -1 DojoX DTL 库简介

DojoX DTL 库简介DojoX DTL 是 DTL(Django Template Language)的 Dojo 实现版本。Neil Roberts 将 DTL 移植到 DojoX 中,并在 DTL 只支持文本基础上增加了对 HTML 元素的支持。DojoX DTL 完全实现了对 DTL 语法的支持,已有的 Django 模板可以很容易地移植到 DojoX DTL。
Django 项目介绍是一款基于 Python 语言的开源 Web 开发框架,主要目的是支持快速的基于数据库的 Web 开发,使用 Django,花极少时间即可构建和维护高质量的 Web 应用。
DTL 是 Django 框架的模板系统语言。DTL 语法简单,提供了很好的扩展性,可以很容易地实现自定义标签(Tag)和过滤器(Filter),是 Django MVC 中的重要组成部分。使用模板的一个主要好处是将页面展示和业务处理逻辑分开,模块之间松散耦合,Web 界面设计人员和业务逻辑开发人员可以独立工作而不互相影响。
Django 模板系统一个 Django 模板是将文档的数据和展示分离的一段文本。模板定义了占位符和若干基本的控制逻辑,即标签。标签控制了文档如何显示。通常来说 Django 模板用来输出 HTML 文本,但是 Django 模板也可以用来产生任何基于文本的格式。
下面是一个公司感谢客户下订单的例子,模板如下:
清单 1. DTL 示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<html>
<head><title>Ordering notice</title></head>

<body>

<p>Dear {{ person_name }},</p>

<p>Thanks for placing an order from {{ company }}. It's scheduled to
ship on {{ ship_date|date:"F j, Y" }}.</p>

<p>Here are the items you've ordered:</p>

<ul>
{% for item in item_list %}
<li>{{ item }}</li>
{% endfor %}
</ul>

{% if ordered_warranty %}
<p>Your warranty information will be included in the packaging.</p>
{% endif %}

<p>Sincerely,<br />{{ company }}</p>

</body>
</html>




这个模板包含了基本的 HTML 元素,一些变量和模板标签,让我们逐个分析:
  • 变量:在“{{”和“}}”之间的文本,如 {{ person_name }} 表示在当前位置输出变量 person_name 的值。
  • 块标签(block tag):在“{%”和“%}”之间的文本,如 {% if ordered_warranty %}。块标签的定义很宽泛,只是告诉模板系统去执行一些操作,而具体做什么则由标签来决定。上面的例子定义了两个块标签,{% for item in item_list %} 和 {% if ordered_warranty %},分别使用了 for 标签和 if 标签。for 标签定义了一个简单的循环,对指定序列进行迭代。if 标签则是一个条件判断,如果 ordered_warranty 为真,则显示 {% if ordered_warranty %} 和 {% endif %} 之间的所有内容,如果为假则不显示。if 标签也支持 {% else %} 和其它的逻辑表达式。Django 模板系统定义了很多内建的标签,具体参见 。开发人员也可以创建自定义的标签来扩展 Django 模板系统的功能。
  • 过滤器(filter):过滤器用来改变变量的显示方式。如 {{ ship_date|date:"F j, Y" }} 表示对变量 ship_date 使用过滤器 date 后输出。"F j, Y"是过滤器 date 的参数,指定了输出的格式。过滤器使用“|”符号,即 Unix 的管道符号。Django 模板系统也定义了很多内建的过滤器,具体参见 。当然开发人员也可以创建自定义的过滤器。
返回列表