django学习笔记(二)模板
1.当模板中的变量名遇到点时,以下面的顺序查找(短路逻辑):
(1)字典类型查找:
>>> from django.template import Template, Context
>>> person = {'name': 'Sally', 'age': ''}
>>> t = Template('{{ person.name }} is {{ person.age }} years old.')
>>> c = Context({'person': person})
>>> t.render(c)
u'Sally is 43 years old.'
(2)对象的属性查找
>>> from django.template import Template, Context
>>> import datetime
>>> d = datetime.date(1993, 5, 2)
>>> d.year
1993
>>> d.month
5
>>> d.day
2
>>> t = Template('The month is {{ date.month }} and the year is {{ date.year }}.')
>>> c = Context({'date': d})
>>> t.render(c)
u'The month is 5 and the year is 1993.'
(3)对象的方法查找
例如,每个 Python 字符串都有 upper() 和 isdigit() 方法,你在模板中可以使用同样的句点语法来调用它们:
>>> from django.template import Template, Context
>>> t = Template('{{ var }} -- {{ var.upper }} -- {{ var.isdigit }}')
>>> t.render(Context({'var': 'hello'}))
u'hello -- HELLO -- False'
>>> t.render(Context({'var': ''}))
u'123 -- 123 -- True'
注意这里调用方法时并没有使用圆括号而且也无法给该方法传递参数,只能调用不需参数的方法。
(4)列表类型索引查找
>>> from django.template import Template, Context
>>> t = Template('Item 2 is {{ items.2 }}.')
>>> c = Context({'items': ['apples', 'bananas', 'carrots']})
>>> t.render(c)
u'Item 2 is carrots.'
注意:不允许使用负数列表索引。 像 {{ items.-1 }} 这样的模板变量将会引发`` TemplateSyntaxError``。
2.句点查找可以多级深度嵌套。 例如 {{person.name.upper}} 会转换成字典类型查找(person['name'] ) 然后是方法调用( upper() )。
3.默认情况下,如果一个变量不存在,模板系统会把它展示为空字符串,不做任何事情来表示失败。
4.{%if%}标签小结
(1)有{%if%}必须有{%endif%},可以有{%else%},没有{%elif%}这个标签。
(2){% if %} 标签接受 and , or 或者 not 关键字来对多个变量做判断 ,或者对变量取反( not )。但是{% if %} 标签不允许在同一个标签中同时使用 and 和 or ,因为逻辑上可能模糊的(模板系统不支持在标签里面用圆括号来组合比较操作)
5.{%for%}标签小结
(1)用法示例
<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}</li>
{% endfor %}
</ul>
可以给标签增加一个 reversed 关键字使得该列表被反向迭代
{% for athlete in athlete_list reversed %}
...
{% endfor %}
(2){%empty%}分句:定义在列表为空列表时的输出内容。
{% for athlete in athlete_list %}
    <p>{{ athlete.name }}</p>
{% empty %}
    <p>There are no athletes. Only computer programmers.</p>
{% endfor %}
{#等价于以下一段代码#}
{% if athlete_list %}
    {% for athlete in athlete_list %}
        <p>{{ athlete.name }}</p>
    {% endfor %}
{% else %}
    <p>There are no athletes. Only computer programmers.</p>
{% endif %}
(3)不支持break和continue操作。
(4)在每个`` {% for %}``循环里有一个称为`` forloop`` 的模板变量。这个变量有一些提示循环进度信息的属性。
forloop.counter 总是一个表示当前循环的执行次数的整数计数器。 这个计数器是从1开始的,所以在第一次循环时 forloop.counter 将会被设置为1。
forloop.counter0 类似于 forloop.counter ,但是它是从0计数的。 第一次执行循环时这个变量会被设置为0。
forloop.revcounter 表示循环中剩余项的整型变量。在循环初次执行时 forloop.revcounter 将被设置为序列中项的总数。最后一次循环执行中,这个变量将被置1。
forloop.revcounter0 类似于 forloop.revcounter ,但它以0做为结束索引。 在第一次执行循环时,该变量会被置为序列的项的个数减1。
{% for item in todo_list %}
    <p>{{ forloop.counter }}: {{ item }}</p>
{% endfor %}
forloop.first 是一个布尔值,如果该迭代是第一次执行,那么它被置为" " 在下面的情形中这个变量是很有用的:
{% for object in objects %}
    {% if forloop.first %}<li class="first">{% else %}<li>{% endif %}
    {{ object }}
    </li>
{% endfor %}
forloop.last 是一个布尔值;在最后一次执行循环时被置为True。
{% for p in places %}{{ p }}{% if not forloop.last %}, {% endif %}{% endfor %}
{#在每两个p之间加上逗号#}
forloop.parentloop 是一个指向当前循环的上一级循环的 forloop 对象的引用(在嵌套循环的情况下)。
{% for country in countries %}
    <table>
    {% for city in country.city_list %}
        <tr>
        <td>Country #{{ forloop.parentloop.counter }}</td>
        <td>City #{{ forloop.counter }}</td>
        <td>{{ city }}</td>
        </tr>
    {% endfor %}
    </table>
{% endfor %}
6.{%ifequal%}和{%ifnotequal%}标签小结
{% ifequal section 'sitenews' %}
    <h1>Site News</h1>
{% else %}{#else为可选标签#}
    <h1>No News Here</h1>
{% endifequal %}
只有模板变量,字符串,整数和小数可以作为 {% ifequal %} 标签的参数。其他任何类型,例如Python的字典类型、列表类型、布尔类型,不能用在 {% ifequal %} 中。
7.注释有两种:
{#something#}类型的注释是单行的,不能换行,否则输出结果和模板本身是完全一样的(也就是说,注释标签并没有被解析为注释)。
如果要实现多行注释,可以使用{%comment%}{%endcomment%}模板标签。
8.模板过滤器是在变量被显示前修改它的值的一个简单方法。 使用管道字符。
{{ name|lower }}
{{ my_list|first|upper }}
有些过滤器有参数。 过滤器的参数跟随冒号之后并且总是以双引号包含。 例如:
{{ bio|truncatewords:"30" }}
这个将显示变量 bio 的前30个词。
9.
django学习笔记(二)模板的更多相关文章
- Django学习笔记二
		Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ... 
- Django学习笔记之模板
		模板 模板介绍 在之前的章节中,视图函数只是直接返回文本,而在实际生产环境中其实很少这样用,因为实际的页面大多是带有样式的HTML代码,这可以让浏览器渲染出非常漂亮的页面. 目前市面上有非常多的模板系 ... 
- Django学习笔记之模板渲染、模板语言、simple_tag、母版子版、静态配置文件
		一.首先我们用PyCharm来创建一个Django项目 终端命令:django-admin startproject sitename 图形创建: 这样一个Django项目就创建完成了,上面可以看 ... 
- django学习笔记二:一个项目多个App项目搭建
		django充许在一个项目中存在多个app,如一个大门户网站中可以包含论坛,新闻等内容,其中每一个模块称之为一个App,也可以理解为一个个独立的小型项目最终集成在一个门户网站中最终呈现给用户 本次测试 ... 
- Django 学习笔记(三)模板导入
		本章内容是将一个html网页放进模板中,并运行服务器将其展现出来. 平台:windows平台下Liunx子系统 目前的目录: hello ├── manage.py ├── hello │ ├── _ ... 
- Django学习笔记(二):使用Template让HTML、CSS参与网页建立
		Django学习笔记(二):使用Template让HTML.CSS参与网页建立 通过本文章实现: 了解Django中Template的使用 让HTML.CSS等参与网页建立 利用静态文件应用网页样式 ... 
- Django 学习笔记(二)
		Django 第一个 Hello World 项目 经过上一篇的安装,我们已经拥有了Django 框架 1.选择项目默认存放的地址 默认地址是C:\Users\Lee,也就是进入cmd控制台的地址,创 ... 
- Django 学习笔记(五)模板标签
		关于Django模板标签官方网址https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.IF标签 Hello World/vi ... 
- Django 学习笔记(四)模板变量
		关于Django模板变量官方网址:https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.传入普通变量 在hello/Hell ... 
- Django 学习笔记(六)MySQL配置
		环境:Ubuntu16.4 工具:Python3.5 一.安装MySQL数据库 终端命令: sudo apt-get install mysql-server sudo apt-get install ... 
随机推荐
- [root@localhost ~]#各项解释
			[root@localhost ~]# 解释: [登录用户@主机名 索引目录(~家目录,当前所在的目录)]#号代表超级用户,$普通用户 
- 请求SQL数据是存在<null>,的解决方法
			删除字典中的null 我们在处理服务器传过来的数据过程中,如果数据中出现null,我们是没法进行本地持久化处理的.在使用NSUserDaults保存本地时,如果其中一个字段的value为NULL值,就 ... 
- python实现身份证识别
			github: 人脸联合语音身份认证:https://github.com/tsstss123/faceUnionVoiceRecognition 身份证识别简易版:https://github.co ... 
- Java对文件夹中的文件按修改时间排序
			import java.io.File; import java.util.Arrays; import java.util.Comparator; import java.util.Date; pu ... 
- bzoj1185【HNOI2007】最小矩形覆盖
			1185: [HNOI2007]最小矩形覆盖 Time Limit: 10 Sec Memory Limit: 162 MBSec Special Judge Submit: 1114 Solv ... 
- openssl将私钥和crt证书合成pfx证书
			pfx是什么文件:公钥加密技术12号标准(Public Key Cryptography Standards #12,PKCS#12)为存储和传输用户或服务器私钥.公钥和证书指定了一个可移植的格式.它 ... 
- Python的自省机制
			什么是自省? 在日常生活中,自省(introspection)是一种自我检查行为. 在计算机编程中,自省是指这种能力:检查某些事物以确定它是什么.它知道什么以及它能做什么.自省向程序员提供了极大的灵活 ... 
- win7 32位下载安装redis并安装php_redis扩展
			redis打包文件下载地址:http://files.cnblogs.com/files/cuiwenyuan/Redis-3.2.100-Windows-32.zip php_redis.dll下载 ... 
- Netbeans8.0设置Consola字体并解决中文乱码问题
			在Netbeans8.0上开发php,设置字体为Consola后.发现中文显示是乱码的.经过改动jre的配置文件成功攻克了这个问题. 1. 进入jdk安装文件夹下/jre/lib文件夹,找到fontc ... 
- POJ - 2195 Going Home  【KM】
			题目链接 http://poj.org/problem?id=2195 题意 在一张N * M 的地图上 有 K 个人 和 K 个房子 地图上每个点都是认为可行走的 求 将每个人都分配到不同的房子 求 ... 
