html过滤{% autoescape on|off %} {{body}} {% endautoescape %}

注释{% comment %} {% endcomment %}

csrf攻击 {% csrf_token %}

循环选择 {% cycle %}    <tr class='{% cycle 'row1' 'row2' %}>

使用当前循环选择

<tr>
<td class="{% cycle 'row1' 'row2' as rowcolors %}">...</td>
<td class="{{ rowcolors }}">...</td>
</tr>
<tr>
<td class="{% cycle rowcolors %}">...</td>
<td class="{{ rowcolors }}">...</td>
</tr>

注意到变量的值是没有自动转义的,所以要加上显式转义:

{% for o in some_list %}
<tr class="{% filter force_escape %}{% cycle rowvalue1 rowvalue2 %}{% endfilter %}">
...
</tr>
{% endfor %}

如果你只是想声明这个循环,而不是输出循环的值,那么在标签的最后增加关键字silent。例:

{% for obj in some_list %}
{% cycle 'row1' 'row2' as rowcolors silent %}
<tr class="{{ rowcolors }}">{% include "subtemplate.html " %}</tr>
{% endfor %}

一旦你在cycle定义中使用了关键字silent,随后的cycle标签也会自动使用silent。下面的例子什么也不会输出,即使第二次cycle没有指定silent

{% cycle 'row1' 'row2' as rowcolors silent %}
{% cycle rowcolors %}

new in Django1.6

{% load cycle from future %}

此时可以使用autoescape off

{% for o in some_list %}
<tr class="{% autoescape off %}{% cycle rowvalue1 rowvalue2 %}{% endautoescape %}">
...
</tr>
{% endfor %}

输出地一个不是false的变量

{% firstof var1 var2 var3 %}

等价于

{% if var1 %}
{{ var1|safe }}
{% elif var2 %}
{{ var2|safe }}
{% elif var3 %}
{{ var3|safe }}
{% endif %}

可以加个默认值

{% firstof var1 var2 var3 "fallback value" %}


{% include "name_snippet.html" with person="Jane" greeting="Hello" %}

加入新页面,传入新变量.


重新分组

假设传入的参数如下:

cities = [
{'name': 'Mumbai', 'population': '19,000,000', 'country': 'India'},
{'name': 'Calcutta', 'population': '15,000,000', 'country': 'India'},
{'name': 'New York', 'population': '20,000,000', 'country': 'USA'},
{'name': 'Chicago', 'population': '7,000,000', 'country': 'USA'},
{'name': 'Tokyo', 'population': '33,000,000', 'country': 'Japan'},
]

我们想按照国家来划分展示:

  • India

    • Mumbai: 19,000,000
    • Calcutta: 15,000,000
  • USA
    • New York: 20,000,000
    • Chicago: 7,000,000
  • Japan
    • Tokyo: 33,000,000

我们可以使用{% regroup %}

{% regroup cities by country as country_list %}

<ul>
{% for country in country_list %}
<li>{{ country.grouper }}
<ul>
{% for item in country.list %}
<li>{{ item.name }}: {{ item.population }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>

但是相同country必须挨在一起排列

cities = [
{'name': 'Mumbai', 'population': '19,000,000', 'country': 'India'},
{'name': 'New York', 'population': '20,000,000', 'country': 'USA'},
{'name': 'Calcutta', 'population': '15,000,000', 'country': 'India'},
{'name': 'Chicago', 'population': '7,000,000', 'country': 'USA'},
{'name': 'Tokyo', 'population': '33,000,000', 'country': 'Japan'},
]

否则会输出如下:

  • India

    • Mumbai: 19,000,000
  • USA
    • New York: 20,000,000
  • India
    • Calcutta: 15,000,000
  • USA
    • Chicago: 7,000,000
  • Japan
    • Tokyo: 33,000,000

解决办法可以使用

{% regroup cities|dictsort:"country" by country as country_list %}

并且我们也可以使用country的属性进行分类,例如country有一个外键description

{% regroup cities by country.description as country_list %}

假如country是一个选择值,我么可以使用get_country_display来显示它的string而不是key值


{% spceless %}去掉多余的空格

{% spaceless %}
<p>
<a href="foo/">Foo</a>
</p>
{% endspaceless %}

效果如下:

<p><a href="foo/">Foo</a></p>

但是只有紧挨着的标签内的空格才会去除,内部的标签空格不会去掉.

{% spaceless %}
<strong>
Hello
</strong>
{% endspaceless %}

<strong>里的空格就不会去掉.


url传参

{% url 'path.to.some_view' v1 v2 %}
{% url 'path.to.some_view' arg1=v1 arg2=v2 %}

我们可以在url中使用as参数

{% url 'path.to.view' arg arg2 as the_url %}

就可以在页面其他地方使用

<a href="{{ the_url }}">I'm linking to {{ the_url }}</a>


{% verbatim %} {% endverbatim %}禁止template render该内容.


重命名变量内容,减少输入

{% with total=business.employees.count %}
{{ total }} employee{{ total|pluralize }}
{% endwith %}

也可以

{% with alpha=1 beta=2 %}
...
{% endwith %}

排序

{{ value|dictsort:"name" }}

假如value是

[
{'name': 'zed', 'age': 19},
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
]

排序后的输出为

[
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
{'name': 'zed', 'age': 19},
]
{% for book in books|dictsort:"author.age" %}
* {{ book.title }} ({{ book.author.name }})
{% endfor %}

可整除

{{ value|divisibleby:"3" }}


过去了多长时间

{{ blog_date|timesince:comment_date }} 评论的时间距博客发表时间过了多久.

还多长时间

{{ conference_date|timeuntil:from_date }} from_data距conference_data还多长时间.


截取字符

{{ value|truncatechars:9 }}  例如value是"Joel is a slug"输出会是"Joel i..."

{{ value|truncatechars_html:9 }} 假如value是"<p>Joel is a slug<p>"输出会是<p>Joel i...</p>

{{ value|truncatewords:2 }} 假如value是"Joel is a slug"输出会是"Joel is..."

{{ value|truncatewords_html:2 }} 假如value是"<p>Joel is a slug<p>"输出会是<p>Joel is...</p>


{{ value|urlencode:"" }} If value is "http://www.example.org/", the output will be "http%3A%2F%2Fwww.example.org%2F".


{{ value|yesno:"yeah,no,maybe" }}


{% load static %}
{% static "images/hi.jpg" as myphoto %}
<img src="{{ myphoto }}"></img>

等价于

{% load static %}
<img src="{% get_static_prefix %}images/hi.jpg" alt="Hi!" />

Django内置template标签的更多相关文章

  1. Django内置模板标签

    Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cy ...

  2. 第三章:模版层 - 2:Django内置模板标签

    Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cy ...

  3. Django 内置模板标签和过滤器

    一.内置模板标签 语法:{%  %} autoescape : 是否转义,on或off作为参数,并确定自动转义是否在块内有效.该块以endautoescape结束 {% autoescape on % ...

  4. python3之Django内置模板标签和过滤器

    一.模板标签 内置标签: 1.autoescape 控制当前的自动转义行为,此标记采用on或者off作为参数,并确定自动转义是否在块内有效.该块以endautoescape结束标签关闭. views: ...

  5. Django内置Admin

    Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件,使用方式有: 依赖APP: django.contrib.auth django.contrib.contenttyp ...

  6. Django内置模版过滤器

    Django内置过滤器总览 可以查询下表来总览Django的内置过滤器: 过滤器 说明 add 加法 addslashes 添加斜杠 capfirst 首字母大写 center 文本居中 cut 切除 ...

  7. Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

    前言 基本环境 Django版本:1.11.8 Python版本:3.6 OS: win10 x64 本文摘要 提供了常用的Django内置过滤器的详细介绍,包括过滤器的功能.语法.代码和效果示例. ...

  8. 框架----Django内置Admin

    Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件,使用方式有: 依赖APP: django.contrib.auth django.contrib.contenttyp ...

  9. Django内置Admin解析

    Django 内置的admin是对于model中对应的数据表进行增删改查提供的组建 一.Django admin的内部依赖: 依赖的app django.contrib.auth django.con ...

随机推荐

  1. Reorder the Books(规律)

    Reorder the Books Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Othe ...

  2. Candy----HDU4465----数学题

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4465 题目意思: 有两个箱子,每个箱子装有N个糖果 打开第一个箱子的概率是P,另外一个就是1-P 当小 ...

  3. java设计模式(二)单例模式 建造者模式

    (三)单例模式 单例模式应该是最常见的设计模式,作用是保证在JVM中,该对象仅仅有一个实例存在. 长处:1.降低某些创建比較频繁的或者比較大型的对象的系统开销. 2.省去了new操作符,减少系统内存使 ...

  4. pcre函数具体解释

    PCRE是一个NFA正则引擎,不然不能提供全然与Perl一致的正则语法功能.但它同一时候也实现了DFA,仅仅是满足数学意义上的正则. PCRE提供了19个接口函数,为了简介,使用PCRE内带的測试程序 ...

  5. git版本工具(团队开发常用)

    1.创建一个版本库 mkdir repository    //创建一个文件夹 git init        //把目录编程git可以管理的仓库 2.提交文件到版本库 git add test.tx ...

  6. JS年月日三级联动下拉框日期选择代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. HTTP协议(超文本传输协议)

    一.HTTP的简介: 超文本传输协议. 它是基于TCP连接的(默认端口号是80).所以在传输数据前客户端需向服务器发送连接请求.当服务器同意连接请求,建立连接后才可以发送数据报文. 二.HTTP的报文 ...

  8. createNewFile创建空文件夹与createTempFile创建临时文件夹

    创建要注意的地方如下: <pre name="code" class="java"> File类的createNewFile根据抽象路径创建一个新的 ...

  9. 一周学会Mootools 1.4中文教程:(2)函数

    温故: 透过对上一节课的学习,相信大家对mt的选择器应该有了一定的认识了,我再放几个小示例让大家对选择器的复杂应用有所了解: <!DOCTYPE html PUBLIC "-//W3C ...

  10. (asp.net MVC学习)System.Web.Mvc.UrlHelper的学习与使用

    上一次学习了HtmlHelper帮助类,这次我们学习一下UrlHelper帮 助类,看类名也都知道这个类是用来帮我们生成URL在ASP.NET MVC应用程序中.让我们来看看该类给我们带来了哪些方便的 ...