django系列 4:模板引擎

来源:互联网 发布:caffe官方教程中译本 编辑:程序博客网 时间:2024/05/20 07:38

1.django严格意义上来说是MTV模式:T:模板 V:视图
在Python代码中使用Django模板的最基本方式如下:
(1). 可以用原始的模板代码字符串创建一个 Template 对象, Django同样支持用指定模板文件路径的方式来创
建 Template 对象;
(2). 调用模板对象的render方法,并且传入一套变量context。它将返回一个基于模板的展现字符串,模板中


2.创建模板
模板的类库 在django的template下
这里写图片描述
这里要强调一点为什么用 python manage.py shell 而不是用python来启动解释器:
因为 python manage.py shell 在启动解释器之前,它告诉Django使用
哪个设置文件。 Django框架的大部分子系统,包括模板系统,都依赖于配置文件;如果Django不知道使用哪
个配置文件,这些系统将不能工作。


3.抛出 TemplateSyntaxError 异常的情况:
-无效的tags

-标签的参数无效

-无效的过滤器

-过滤器的参数无效

-过滤器的参数无效

-未封闭的块标签 (针对需要封闭的块标签)


4.模板渲染
一旦你创建一个 Template 对象,你可以用 context 来传递数据给它。 一个context是一系列变量和它们值的集
合。
这里写图片描述
t.render(c) 返回的值是一个Unicode对象,不是普通的Python字符串。 你可以通过
字符串前的 u 来区分


5.处理无效变量
默认情况下,如果一个变量不存在,模板系统会把它展示为空字符串,不做任何事情来表示失败


6.基本的模板标签和过滤器
标签
if/else
-{% if %} 标签检查(evaluate)一个变量,如果这个变量为真(即,变量存在,非空,不是布尔值假),系统会
显示在 {% if %} 和 {% endif %} 之间的任何内容
-{% if %} 标签接受 and , or 或者 not 关键字来对多个变量做判断 ,或者对变量取反( not )
-{% if %} 标签不允许在同一个标签中同时使用 and 和 or ,因为逻辑上可能模糊的,例如,如下示例是错误的:

for
{% for %} 允许我们在一个序列上迭代。 与Python的 for 语句的情形类似,循环语法是 for X in Y ,Y是要迭
代的序列而X是在每一个特定的循环中使用的变量名称。 每一次循环中,模板系统会渲染在 {% for %} 和
{% endfor %} 之间的所有内容。
Django不支持退出循环操作。 如果我们想退出循环,可以改变正在迭代的变量,让其仅仅包含需要迭代的项
目。 同理,Django也不支持continue语句,我们无法让当前迭代操作跳回到循环头部。

ifequal/ifnotequal
Django模板系统压根儿就没想过实现一个全功能的编程语言,所以它不允许我们在模板中执行Python的语句
(还是那句话,要了解更多请参看理念和限制小节)。 但是比较两个变量的值并且显示一些结果实在是个太常
见的需求了,所以Django提供了 {% ifequal %} 标签供我们使用。
{% ifequal %} 标签比较两个值,当他们相等时,显示在 {% ifequal %} 和 {% endifequal %} 之中所有的值。


7.在视图中使用模板
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

0 0
原创粉丝点击