Django中文参考-

发布时间:   来源:文档文库   
字号:
django 内建标签和过滤器参考


下面的标签和过滤器参考就是为那些没有 admin 站点的可用的人准备的.由于 Django 是高度可定制的,你的 admin 里的关于标签和过滤器的参考可以认为是最可信的. 内建标签参考
block 定义一个能被子模板覆盖的 . 参阅 模板继承 了解更多信息
comment 注释.模板引擎会忽略掉 {% comment %} {% endcomment %} 之间的所有内容. cycle 在循环时轮流使用给定的字符串列表中的值. 在一个循环中, 在循环过程中的每次循环里轮流使用给定的字符串列表元素: {% for o in some_list %} ... {% endfor %} 在循环之外, 在你第一次调用它时给这些字符串值定义一个不重复的名字,然后在循环中使用这个名字: ... ... ... 你可以使用任意数量的逗号分隔的值.只有一点请你注意,不要在值与值之间放任何空隔--仅仅只有一个逗号即可.
debug 输出完整的调试信息,包括当前的上下文及导入的模块信息. extends 当前模板 扩展 父模板的一个信号(标记. 这个标签有两种使用方式: {% extends "base.html" %} (带双引号 使用 "base" 作为要扩展的父模板的名字.或者 {%
extends variable %} 使用 variable 的值作为要扩展的父模板的名字. 参阅 模板继承 以了解更多信息. filter 用来过滤变量的值. 允许多级过滤, 并且他们可以带有参数运行 -- just like in variable syntax. 示例: {% filter escape|lower %} 文本将被 HTML-转义, 并且全部转化为小写 {% end过滤器 %} firstof 输出传递给它的第一个不是 False 的变量值. 如果所有的变量都是 False 那就不输出任何东西. 示例: {% firstof var1 var2 var3 %} 它等价于: {% if var1 %}
{{ var1 }} {% else %}{% if var2 %}
{{ var2 }} {% else %}{% if var3 %}
{{ var3 }} {% endif %}{% endif %}{% endif %} for
循环. 比如要显示一个 athlete_list 中的全部运动员:
    {% for athlete in athlete_list %}
  • {{ athlete.name }}
  • {% endfor %}
通过使用 {% for obj in list reversed %} 你也可以实现反序循环. 在循环过程中 for 循环会设置以下的一系列变量:

Variable forloop.counter forloop.counter0 forloop.revcounter forloop.revcounter0 forloop.first Description 当前循环次数 (1-indexed 当前循环次数
(0-indexed 倒序循环时当前循环次数(1-indexed 倒序循环时当前循环次数(0-indexed 如果当前循环是循环过程的第一次则为True 如果当前循环是循环过程的最后一次则True 对嵌套循环, 当前循环之上的循环
forloop.last forloop.parentloop
if {% 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 检查一个变量自上次循环之后是否发生了改变.(我的理解:主要用于过滤掉重复的值 'ifchanged' block标签用于循环中. 它根据自身上次的状态检查自己值, 只有值发生变化时才显示这个值:

Archive for {{ year }}


{% for day in days %} {% ifchanged %}

{{ day|date:"F" }}

{% endifchanged %} {{ day|date:"j" }} {% endfor %} ifequal 若两个参数相等,输出一个内容块. 例子: {% ifequal user.id comment.user_id %}
...
{% endifequal %} 如同 {% if %} tag, 它也支持一个可选的 {% else %} 子句. 参数可以是变量,也可以是字符串字面值, 也就是说下面这样也是合法的: {% ifequal user.username "adrian" %}
... {% endifequal %} ifnotequal 类似 ifequal, 只是它用来测试两个参数是否不等. include
载入一个模板并根据当前上下文渲染它.用于在一个模板中包含其它模板. 模板名字可以是一个变量,也可以是一个字符串(带引号的字符串,无所谓单引号还是双引号. 下面这个例子包含了 "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 %}. load 装入一个自定义模板标签集. 参阅 自定义标签及过滤器库 以了解更多信息. now 显示当前日期, 根据给定的字符串决定输出格式. 使用和 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' P12小时制的小时分钟及'a.m.'/'p.m.' 分钟数若为零则不显示. 用字符串表示特殊的时间点, 'midnight'

'noon' (django扩展'1 a.m.', '1:30 p.m.', 'midnight', 'noon', '12:30 p.m.' rRFC 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 WISO-8601 一年的第多少星期数, 一周从星期一开始1, 23 yYear, 2 位数字表示'99'
YYear, 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 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 %}
    {% for group in grouped %}
  • {{ group.grouper }}
      {% for item in group.list %}
    • {{ item }}
    • {% endfor %}
    {% endfor %}
如同你看到的, {% regroup %} 生成一个变量包含一个对象的列表. 列表中的每个对象都拥有 grouper list 属性. grouper
装有分组的条目; list 包含一系列拥有共同 grouper 属性的对象. 在这个例子里, grouper 可能是 Male, Female

Unknown, list 则是属于这几种性别的人的列表. 注意当这个被分组的列表没有按你要分组的键排序时, {% regroup %} 将不能工作! 就是说你的 people 列表如果没有按 gender 排序, 你就必须得保证在使用它之前先将它排好序,也就是: {% regroup people|dictsort:"gender" by gender as grouped %} spaceless HTML标签之间的空白格式化为一个空格. 空白包括空格,换行,制表符. 示例: {% spaceless %}

Foo

{% endspaceless %} 这个例子将返回这样的HTML:

Foo

只有 标签 之间的空白被处理 -- 标签与文本之间的空白不会被处理.在下面这个例子, Hello 周围的空白不会被缩小: {% spaceless %} Hello {% endspaceless %} ssi 在页面中输出给定文件的内容. 类似一个简单的 "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 %}. templatetag 输出一个组成模板标签的字符. 由于模板系统没有 "转义" 的概念, 要显示一个组成模板标签的字符, 你必须使用 {% templatetag %} 标签. 用参数告诉标签输出哪些内容: 参数输出 openblock{% closeblock%} openvariable{{
closevariable}}
openbrace{ closebrace}
widthratio 要创建柱形图的话, 这个标签计算给定值与最大值的比率再乘以100,四舍五入为整数,最后输出这个整数. 例子: src="bar.gif" height="10" width="{% widthratio this_value max_value 100 %}" /> 上例中, 如果 this_value 175 max_value 200, 则上例中的图片应该是 88 像素宽 (因为 175/200 = .875; .875 * 100 = 87.5 四舍五入为 88. 内建过滤器参考
add 返回参数与被处理数据相加的结果. addslashes 给敏感字符添加斜线(转义. 举例,要将一个字符串传递给 JavaScript .. capfirst 大写被处理数据的第一个字母. center 按给定宽度将待处理数据居中. cut 将待处理数据中的所有子串删除(该子串等于 cut 的参数
date 根据给定的格式( now 标签相同格式化一个日期. default 如果值不可用,使用提供的默认值. default_if_none 如果值为 None, 使用这个给定的默认值. dictsort
接受一个字典列表,返回按给定参数的属性排序后的列表. dictsortreversed 接受一个字典列表,返回按给定参数的属性逆序排序后的列表. divisibleby 如果值可以被参数除尽,则返回 True. escape 对一个字符串的敏感字符进入转义(以用于HTML. 特别是它会做如下替换: "&" to "&" < to "<"
> to ">" '"' (double quote to '"' "'" (single quote to ''' filesizeformat 将值格式化为 '可读性好的' 文件大小(比如 '13 KB', '4.1 MB', '102bytes' 等等. first 返回列表中的第一个元素. fix_ampersands & 符号替换为 & 实体. floatformat 将一个浮点数四舍五入到小数点后1 -- 如果根本没有小数,小数部分不会显示.例如: 36.123 被转换成 36.1 36.15 被转换成 36.2 36 被转换成 36 get_digit 提供一个完整的数, 返回该数中被请求的数字,其中 1 是最右边的数, 2 是从右边数第二个数字等等. 若输入值非法(若输入或参数不是整数, 或者参数小于1则返回其原始值. 否则输出就总是整数. join 用一个字符串将一个列表连接起来, 类似 Python
str.join(list.
length 返回值的长度. 对列表特别有用. length_is 若值的长度与参数相等,返回 True, 否则返回 False. linebreaks 将换行符转化为


.
linebreaksbr 将换行符转化为
. linenumbers 带行号显示文本. ljust 在给定宽度的域内将文本左对齐. 参数: 域宽度
lower 将字符串转化为小写. make_list 将值转化为一个列表.对一个整数,它是一个数字的列表.对一个字符串,这是一个字符的列表. phone2numeric 将一个电话号码(可能包含字母转化等价的数字值.比如: '800-COLLECT' 将被转化为
'800-2655328'. 输入不一定非是一个合法号码. 它可以转化任意字符串. pluralize 如果值不是 1 的话返回 's' 用于 '1 vote' vs. '2 votes' 这种场合. 例如: you have {{number_messages}} mail{{number_messages|pluralize}}. (对中国人用处不大,嘿嘿)
pprint pprint.pprint 和一个封装器-- 仅用于调试. random
返回随机的从列表中返回一个元素
removetags 从输出中删除单空格分隔的 [X]HTML标签 列表
rjust 在给定宽度的域内将文本右对齐. 参数: 域大小
slice 返回一个列表的片段. 使用与 Python list 相同的语法, 参阅

http://diveintopython.org/native_data_types/lists.html#odbchelper.list.slice 以了解更详细的信息. 示例: {{ some_list|slice:":2" }} slugify 转化为小写, 移去非单词字符(字母数字和下划线,将空白转化为连字符,去除前后空白. stringformat 根据给定参数(一个格式字符串格式化一个变量, 这个格式字符串使用 Python 字符串格式化语法, 例外之处是 "%" 运算符被省略. 参阅 http://docs.python.org/lib/typesseq-strings.html 以了解 Python 格式字符
striptags 过滤掉[X]HTML标签. time 根据给定的格式, 格式化一个时间( now 标签使用的格式相同. timesince 格式化一个日期,这个日期是从给定日期到现在的天数和小时数(比如: "4 days, 6 hours". 接受一个可选的参数,该参数是一个包含比较日期的变量(该参数默认值是 now. 例来说, 如果 blog_date 是一个日期实例表示 2006-06-01
午夜, comment_date 是一个日期实例表示 2006-06-01 早上8点,那么 {{

comment_date|timesince:blog_date }} 将返回 "8 hours". timeuntil 类似 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". title 按标题格式转化一个字符串
truncatewords 将一个字符串截短为指定数目的单词. 参数: 要保留的单词数
unordered_list 递归的接受一个自嵌套的列表并返回一个HTML无序列表(此列表可不是pythob语义中的列表 -- 只是没有开始和结束的

    标签. . , var ['States', [['Kansas', [['Lawrence', []],
    ['Topeka', []]]], ['Illinois', []]]], 那么 {{ var|unordered_list }} 就会返回:
  • States
    • Kansas
      • Lawrence
      • Topeka

    • Illinois

  • upper 将一个字符串全部转为大写. urlencode 转义该值以用于 URL. urlize 将普通文本的 URL 转化为可点击的链接. urlizetrunc URL 转化为一个可点击的链接, 根据给定的字符数截短 URL. 参数: URL长度 wordcount 返回单词数
    wordwrap 在指定行长将文字折行. 参数: 行长(以字符计
    yesno 提供一个字符串参数对应着 true, false (可选的 None, 根据被处理的值返回相应的字符串: ValueArgumentOutputs True"yeah,no,maybe"yeah False"yeah,no,maybe"no
    None"yeah,no,maybe"maybe None"yeah,no""no" (如果没有对应 None 的字符串,就将 None 转化为 False 处理

    其它 tags filter
    Django 带了个其 tag 库,使这些 tag 显式 INSTALLED_APPS 设置中启用他们,然后在模板中使用 {% load %} tag 载入他们.
    django.contrib.humanize 一堆 Django 模板过滤器,用于生成易读的数据,参阅 humanize documentation. django.contrib.markup 一堆模板过滤器,支持以下常见标记语言: Textile
    Markdown ReST (ReStructured Text


    本文来源:https://www.2haoxitong.net/k/doc/e95f69bfc77da26925c5b09d.html

《Django中文参考-.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式