标签:des class blog code java http
下面的标签和过滤器参考就是为那些没有 admin 站点的可用的人准备的.由于 Django 是高度可定制的,你的 admin 里的关于标签和过滤器的参考可以认为是最可信的.
定义一个能被子模板覆盖的 块. 参阅 模板继承 了解更多信息
在循环时轮流使用给定的字符串列表中的值.
在一个循环中, 在循环过程中的每次循环里轮流使用给定的字符串列表元素:
{% for o in some_list %} <tr class="{% cycle row1,row2 %}"> ... </tr> {% endfor %}
在循环之外, 在你第一次调用它时给这些字符串值定义一个不重复的名字,然后在循环中使用这个名字:
<tr class="{% cycle row1,row2,row3 as rowcolors %}">...</tr> <tr class="{% cycle rowcolors %}">...</tr> <tr class="{% cycle rowcolors %}">...</tr>
你可以使用任意数量的逗号分隔的值.只有一点请你注意,不要在值与值之间放任何空隔--仅仅只有一个逗号即可.
当前模板 扩展 父模板的一个信号(标记).
这个标签有两种使用方式: {% extends "base.html" %} (带双引号) 使用 "base" 作为要扩展的父模板的名字.或者 {% extends variable %} 使用 variable 的值作为要扩展的父模板的名字.
参阅 模板继承 以了解更多信息.
用来过滤变量的值.
允许多级过滤, 并且他们可以带有参数运行 -- just like in variable syntax.
示例:
{% filter escape|lower %} 文本将被 HTML-转义, 并且全部转化为小写 {% end过滤器 %}
输出传递给它的第一个不是 False 的变量值. 如果所有的变量都是 False 那就不输出任何东西.
示例:
{% firstof var1 var2 var3 %}
它等价于:
{% if var1 %} {{ var1 }} {% else %}{% if var2 %} {{ var2 }} {% else %}{% if var3 %} {{ var3 }} {% endif %}{% endif %}{% endif %}
循环. 比如要显示一个 athlete_list 中的全部运动员:
<ul> {% for athlete in athlete_list %} <li>{{ athlete.name }}</li> {% endfor %} </ul>
通过使用 {% for obj in list reversed %} 你也可以实现反序循环.
在循环过程中 for 循环会设置以下的一系列变量:
Variable Description forloop.counter 当前循环次数 (1-indexed) forloop.counter0 当前循环次数 (0-indexed) forloop.revcounter 倒序循环时当前循环次数(1-indexed) forloop.revcounter0 倒序循环时当前循环次数(0-indexed) forloop.first 如果当前循环是循环过程的第一次则为True forloop.last 如果当前循环是循环过程的最后一次则为True forloop.parentloop 对嵌套循环, 当前循环之上的循环
{% if %} 标签对一个变量求值, 若这个变量为 "true" , 就输出 if 内容块:
{% if athlete_list %} Number of athletes: {{ athlete_list|length }} {% else %} No athletes. {% endif %}
在上例中, 如果 athlete_list 非空, 运动员人数就会通过 {{ athlete_list|length }} 变量显示出来.
就象你刚刚看到的, if 标签可以带一个 {% else %} 子句,用来当 if 测试失败后输出相应的内容块.
if``标签可以使用 ``and,``or`` 或 not 来测试一系列变量或否定一个给定的变量:
{% if athlete_list and coach_list %} Both athletes and coaches are available. {% endif %}
{% if not athlete_list %} There are no athletes. {% endif %}
{% if athlete_list or coach_list %} There are some athletes or some coaches. {% endif %}
{% if not athlete_list or coach_list %} There are no athletes or there are some coaches (OK, so writing English translations of boolean logic sounds stupid; it‘s not our fault). {% endif %}
{% if athlete_list and not coach_list %} There are some athletes and absolutely no coaches. {% endif %}
为避免造成歧义, if``标签不允许在一个 tag 中同时有 ``and 和 or 逻辑; 举个例子,下面这个语句不能工作:
{% if athlete_list and coach_list or other_list %}
如果确实需要组合条件,可以使用嵌套的 if 实现相同的功能:
{% if athlete_list %} {% if coach_list or other_list %} We have athletes and , either coaches or others. {% endif %} {% endif %}
检查一个变量自上次循环之后是否发生了改变.(我的理解:主要用于过滤掉重复的值)
‘ifchanged‘ block标签用于循环中. 它根据自身上次的状态检查自己值, 只有值发生变化时才显示这个值:
<h1>Archive for {{ year }}</h1>
{% for day in days %} {% ifchanged %}<h3>{{ day|date:"F" }}</h3>{% endifchanged %} <a href="{{ day|date:"M/d"|lower }}/">{{ day|date:"j" }}</a> {% endfor %}
若两个参数相等,输出一个内容块.
例子:
{% ifequal user.id comment.user_id %} ... {% endifequal %}
如同 {% if %} tag, 它也支持一个可选的 {% else %} 子句.
参数可以是变量,也可以是字符串字面值, 也就是说下面这样也是合法的:
{% ifequal user.username "adrian" %} ... {% endifequal %}
载入一个模板并根据当前上下文渲染它.用于在一个模板中包含其它模板.
模板名字可以是一个变量,也可以是一个字符串(带引号的字符串,无所谓单引号还是双引号).
下面这个例子包含了 "foo/bar.html" 模板的内容:
{% include "foo/bar.html" %}
下面这个例子包含了另一个模板(该模板的名字为变量 template_name 的值)的内容:
{% include template_name %}
被包含的模板使用包含它的模板的上下文(也就是环境)进行渲染(求值),下面这个例子输出 "Hello, John":
Context: variable person is set to "john".
Template:
{% include "name_snippet.html" %}The name_snippet.html template:
Hello, {{ person }}
参阅: {% ssi %}.
显示当前日期, 根据给定的字符串决定输出格式.
使用和 PHP 的 date() 函数一样的格式码 (http://php.net/date) 并做了一些扩展
可用的格式字符串:
格式字符 描述 输出示例 a ‘a.m.‘ 或 ‘p.m.‘ (注意,它与PHP 的输出略有不同.它包括了句点(django扩展). ‘a.m.‘ A ‘AM‘ 或 ‘PM‘. ‘AM‘ B 未实现. d 每月第几天, 带前导零 ‘01‘ to ‘31‘ D 每周第几天,3字母的字符串. ‘Fri‘ f 时间, 12-小时制的小时和分钟数, 如果分钟数为零,则不显示.(django 扩展). ‘1‘, ‘1:30‘ F 月份, 长文本格式. ‘January‘ g 小时, 12-小时制,没有前导零 ‘1‘ to ‘12‘ G 小时, 24-小时制,没有前导零 ‘0‘ to ‘23‘ h 小时, 12-小时制,有前导零 ‘01‘ to ‘12‘ H 小时, 24-小时制,有前导零 ‘00‘ to ‘23‘ i 分钟. ‘00‘ to ‘59‘ I 未实现 j 每月第几天, 无前导零 ‘1‘ to ‘31‘ l 每周第几天,长文本格式. ‘Friday‘ L 是否闰年. True or False m 数字表示的月份,有前导零. ‘01‘ to ‘12‘ M 月份,3字母短文本格式. ‘Jan‘ n 数字表示的月份,无前导零 ‘1‘ to ‘12‘ N 出版风格的月份缩写(django 扩展) ‘Jan.‘, ‘Feb.‘, ‘March‘, ‘May‘ O 与格林威治的时间差(以小时计) ‘+0200‘ P 12小时制的小时分钟及‘a.m.‘/‘p.m.‘ 分钟数若为零则不显示. 用字符串表示特殊的时间点, 如 ‘midnight‘ 和 ‘noon‘ (django扩展) ‘1 a.m.‘, ‘1:30 p.m.‘, ‘midnight‘, ‘noon‘, ‘12:30 p.m.‘ r RFC 822 格式的日期 . ‘Thu, 21 Dec 2000 16:01:07 +0200‘ s 秒数, 带有前导零的数字表示 ‘00‘ to ‘59‘ S 英语序数后缀,用于一个月的第几天,2个字符 ‘st‘, ‘nd‘, ‘rd‘ or ‘th‘ t 给定月共有多少天. 28 to 31 T 本机时区. ‘EST‘, ‘MDT‘ U 未实现 w 一周中的第几天,没有前导零的数字 ‘0‘ (Sunday) to ‘6‘ (Saturday) W ISO-8601 一年的第多少星期数, 一周从星期一开始 1, 23 y Year, 2 位数字表示 ‘99‘ Y Year, 4 位数字表示 ‘1999‘ z 一年中的第几天 . 0 to 365 Z 以秒计的时区偏移量. 这个偏移量对UTC西部时区总是负数,而对UTC东部时区则总是正数 -43200 to 43200
例子:
It is {% now "jS F Y H:i" %}
注意你可以使用反斜线转义一个格式字符串中的敏感字符.(如果你想使用其原始值的话).在下面这个例子里, "f" 被用反斜线转义, 因为 "f" 本身是一个用于显示时间的格式字符. "o" 不需要被转义,因为它不是一个格式字符.:
It is the {% now "jS o/f F" %}
(显示 "It is the 4th of September" %}
Regroup a list of alike objects by a common attribute.
要搞懂这个复杂的标签, 最好还是用一个例子来说明(一幅图胜过千句话): 有一个 people 对象,它是一个 Person 对象(拥有 first_name, last_name 及 gender 属性)的列表. 你想显示一个象下面这样的列表:
- Male:
- George Bush
- Bill Clinton
- Female:
- Margaret Thatcher
- Condoleezza Rice
- Unknown:
- Pat Smith
下面的模板代码片断可以完成这个看上去复杂的任务:
{% regroup people by gender as grouped %} <ul> {% for group in grouped %} <li>{{ group.grouper }} <ul> {% for item in group.list %} <li>{{ item }}</li> {% endfor %} </ul> {% endfor %} </ul>
如同你看到的, {% regroup %} 生成一个变量包含一个对象的列表. 列表中的每个对象都拥有 grouper 和 list 属性. grouper 装有分组的条目; list 包含一系列拥有共同 grouper 属性的对象. 在这个例子里, grouper 可能是 Male, Female 和 Unknown, 而 list 则是属于这几种性别的人的列表.
注意当这个被分组的列表没有按你要分组的键排序时, {% regroup %} 将不能工作! 这就是说你的 people 列表如果没有按 gender 排序, 你就必须得保证在使用它之前先将它排好序,也就是:
{% regroup people|dictsort:"gender" by gender as grouped %}
将HTML标签之间的空白格式化为一个空格. 空白包括空格,换行,制表符.
示例:
{% spaceless %} <p> <a href="foo/">Foo</a> </p> {% endspaceless %}
这个例子将返回这样的HTML:
<p> <a href="foo/">Foo</a> </p>
只有 标签 之间的空白被处理 -- 标签与文本之间的空白不会被处理.在下面这个例子里, Hello 周围的空白不会被缩小:
{% spaceless %} <strong> Hello </strong> {% endspaceless %}
在页面中输出给定文件的内容.
类似一个简单的 "include" 标签, {% ssi %} 包含另一个文件的内容 -- 不过必须在当前页面指定一个绝对路径
{% ssi /home/html/ljworld.com/includes/right_generic.html %}
如果提供了可选的 "parsed" 参数, 被包含文件的内容会使用当前的上下文作为模板代码进行求值处理.:
{% ssi /home/html/ljworld.com/includes/right_generic.html parsed %}
注意如何你使用 {% ssi %}, 出于安全考虑, 你需要在你的 Django settings 文件中定义 ALLOWED_INCLUDE_ROOTS .
参阅: {% include %}.
对一个字符串的敏感字符进入转义(以用于HTML). 特别是它会做如下替换:
- "&" to "&"
- < to "<"
- > to ">"
- ‘"‘ (double quote) to ‘"‘
- "‘" (single quote) to ‘'‘
提供一个完整的数, 返回该数中被请求的数字,其中 1 是最右边的数, 2 是从右边数第二个数字等等. 若输入值非法(若输入或参数不是整数, 或者参数小于1)则返回其原始值. 否则输出就总是整数.
将一个电话号码(可能包含字母)转化等价的数字值.比如: ‘800-COLLECT‘ 将被转化为 ‘800-2655328‘.
输入不一定非是一个合法号码. 它可以转化任意字符串.
如果值不是 1 的话返回 ‘s‘ 用于 ‘1 vote‘ vs. ‘2 votes‘ 这种场合. 例如:
you have {{number_messages}} mail{{number_messages|pluralize}}. (对中国人用处不大,嘿嘿)
返回一个列表的片段.
使用与 Python 的 list 相同的语法, 参阅 http://diveintopython.org/native_data_types/lists.html#odbchelper.list.slice 以了解更详细的信息.
示例: {{ some_list|slice:":2" }}
根据给定参数(一个格式字符串)格式化一个变量, 这个格式字符串使用 Python 字符串格式化语法, 例外之处是 "%" 运算符被省略.
参阅 http://docs.python.org/lib/typesseq-strings.html 以了解 Python 格式字符串
格式化一个日期,这个日期是从给定日期到现在的天数和小时数(比如: "4 days, 6 hours").
接受一个可选的参数,该参数是一个包含比较日期的变量(该参数默认值是 now). 举例来说, 如果 blog_date 是一个日期实例表示 2006-06-01 午夜, 而 comment_date 是一个日期实例表示 2006-06-01 早上8点,那么 {{ comment_date|timesince:blog_date }} 将返回 "8 hours".
类似 timesince, 只是它比较当前时间直到给定日期时间。举例来说,如果今天是 2006-06-01 而 conference_date 是 2006-06-29, 那么 {{ conference_date|timeuntil }} 将返回 "28 days".
接受一个可选的参数,该参数是一个包含比较日期的变量(该参数默认值是 now). 举例来说, 如果 from_date 是一个日期实例表示 2006-06-22, 那么 {{ conference_date|timeuntil:from_date }} 会返回 "7 days".
递归的接受一个自嵌套的列表并返回一个HTML无序列表(此列表可不是pythob语义中的列表) -- 只是没有开始和结束的<ul>标签.
假定该列表是合适的格式. 举例来说, 如果 var 的值为 [‘States‘, [[‘Kansas‘, [[‘Lawrence‘, []], [‘Topeka‘, []]]], [‘Illinois‘, []]]], 那么 {{ var|unordered_list }} 就会返回:
<li>States <ul> <li>Kansas <ul> <li>Lawrence</li> <li>Topeka</li> </ul> </li> <li>Illinois</li> </ul> </li>
Django 自带了几个其它的模板 tag 库,要使用这些 tag 库,必须显式的在 INSTALLED_APPS 设置中启用他们,然后在模板中使用 {% load %} tag 载入他们.
一堆 Django 模板过滤器,用于生成易读的数据,参阅 humanize documentation.
django 内建标签和过滤器参考,布布扣,bubuko.com
标签:des class blog code java http
原文地址:http://www.cnblogs.com/zhaojia-dream/p/3799841.html