Django学习笔记(4):Django模板系统(上)
来源:互联网 发布:ubuntu wine qq 乱码 编辑:程序博客网 时间:2024/05/30 19:35
一、Django模板的组织形式
在上一节中说的标签、模板变量,或许还没一个笼统的定义。这一节着重学习Django模板系统内置的模板标签和过滤器。首先看这个例子:
1 <html> 2 <head><title>标题</title></head> 3 <body> 4 <p>Dear {{ person_name }},</p> 5 <p>Thanks for placing an order from {{ company }}. It's scheduled to 6 ship on {{ ship_date|date:"F j, Y" }}.</p> 7 <p>Here are the items you've ordered:</p> 8 <ul> 9 {% for item in item_list %}10 <li>{{ item }}</li>11 {% endfor %}12 </ul>13 {% if ordered_warranty %}14 <p>Your warranty information will be included in the packaging.</p>15 {% endif %}16 <p>Sincerely,<br />{{ company }}</p>17 </body>18 </html>
其中:{%xxx%}是模板标签;{{eee}}是模板变量,{{eee|jjj:...}}是过滤器形式
Django模板是一个string文本,它用来分离一个文档的展现和数据模板定义了placeholder和表示多种逻辑的tags来规定文档如何展现通常模板用来输出HTML,但是Django模板也能生成其它基于文本的形式
二、常用的模板标签
1.if/else
1 {%if today_is_weekend%}2 <p>Welcome~</p>3 {%else%}4 <p>NO!</p>5 {%endif%}
<span style=
"color: #ff0000;"
>Python的真值:</span>
空列表[]、空元祖()、空字典{}、空字符串
""
,零0、None 都为假
其他都是真值
{% if %}还可以与and、or、not一起使用,判断一个或多个变量,或者取反(not)
注意:
1.不允许同时使用and、or
2.不支持圆括号来组合比较操作
3.没有{%elif%}标签
4.每一个{%if%}标签要对应{%endif%}(中间没空格)关闭标签,否则django会抛出TemplateSyntaxError。
2.for
1 <ul>2 {%for person in Person_list%}3 <li>{{person.name}}</li>4 {%endfor%}5 </ul>
注意:
1.我们也能够嵌套for
2.Django不支持退出循环,不支持continue
3.{%for%}标签内置了一个forloop模板变量,它含有一些属性提供循环的信息:
1.forloop.counter表示循环的次数,它从1开始计数,第一次循环设为12.forloop.counter0类似于forloop.counter,但它是从0开始计数,第一次循环设为03.forloop.revcounter表示循环中剩下的items数量,第一次循环时设为items总数,最后一次设为14.forloop.revcounter0类似于forloop.revcounter,但它是表示的数量少一个,即最后一次循环时设为05.orloop.first当第一次循环时值为True,在特别情况下很有用:----------------------------------------------------------------------------{% for object in objects %} {% if forloop.first %}<li class="first">{% else %}<li>{% endif %} {{ object }} </li>{% endfor %}----------------------------------------------------------------------------6.forloop.last当最后一次循环时值为True7.forloop.parentloop在嵌套循环中表示父循环的forloop:
3.ifequal/ifnotequal
{% ifequal %}比较两个值,如果相等,则显示{% ifequal %}和{% endifequal %}之间的所有内容:
1 {% ifequal a b %}2 <h1>Welcome!a and b</h1>3 {% endifequal %}
注意:
1.{% ifequal %}标签支持{% else %},这一点不再累述
2.strings,integers和小数都可以作为{% ifequal %}的参数
3.其它的Python类型,如字典、列表或booleans不能硬编码在{% ifequal %}里面
4.如果你需要测试某个变量是true或false,用{% if %}即可
4.block
定义了一个被子模块覆盖的区块,在模板继承知识点可深入
5.comment
模板引擎会忽略掉{%comment%}...{%endcomment%}之间的内容
6.extends
标记当前模板扩展一个父模板
其他的模板标签可以在以后的章节中详细学习,也可在django 官方文档中查阅。
三、模板注释
Django模板语言允许注释{# #},模板渲染时注释不会输出,一个注释不能分成多行
1 {# This is a comment #}
四、过滤器
1.过滤器简介:
(1):模板过滤器是变量显示前转换它们的值的方式,通过 (|)管道来申请一个过滤器,如姓名转换成小写:
1 {{ name|lower }}
(2):过滤器可以串成链,即一个过滤器的结果可以传向下一个
1 {{ my_text|escape|linebreaks }}
(3):有些过滤器需要参数,过滤器参数一直使用双引号,如显示bio标量的前30个字,
1 {{ bio|truncatewords:"30" }}
2.常用的过滤器
这里我推荐二篇博文,里面讲解十分详细:
http://doudoubear11.blog.163.com/blog/static/301262432011618103643135/
http://blog.csdn.net/yima1006/article/details/7201199
- Django学习笔记(4):Django模板系统(上)
- Django学习笔记(5):Django模板系统(下)
- Django的学习笔记(二)(Django模板)
- django系统学习笔记
- 【django 学习笔记】03-模板
- Django学习笔记-3-模板
- Django 学习笔记2 模板
- django学习笔记(模板)
- django学习笔记- 模板篇
- Django 学习笔记(4)
- Django学习4-模板表达式
- 【django 学习笔记】08-模板高级进阶
- Django学习笔记(第四节)模板
- Django学习笔记9-使用模板
- django 模板系统
- Django的模板系统
- Django模板系统
- django 模板系统
- 11572 - Unique Snowflakes
- 黑马程序员--集合框架:List、Set和Map体系
- 文章标题
- linux 下打开eclipse报错(A Java RunTime Environment (JRE) or)
- 第5章的5.19
- Django学习笔记(4):Django模板系统(上)
- 收集遇到的问题
- 通过函数调用对字符串数组进行各种排序
- 我和opencv 序
- Linux驱动学习书籍推荐
- window下ubuntu12.04双系统的安装
- Django学习笔记(2):Django视图和URL
- 展开收起特效
- JavaScript使用伪造方式实现继承