Django内置template标签
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标签的更多相关文章
- Django内置模板标签
Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cy ...
- 第三章:模版层 - 2:Django内置模板标签
Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cy ...
- Django 内置模板标签和过滤器
一.内置模板标签 语法:{% %} autoescape : 是否转义,on或off作为参数,并确定自动转义是否在块内有效.该块以endautoescape结束 {% autoescape on % ...
- python3之Django内置模板标签和过滤器
一.模板标签 内置标签: 1.autoescape 控制当前的自动转义行为,此标记采用on或者off作为参数,并确定自动转义是否在块内有效.该块以endautoescape结束标签关闭. views: ...
- Django内置Admin
Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件,使用方式有: 依赖APP: django.contrib.auth django.contrib.contenttyp ...
- Django内置模版过滤器
Django内置过滤器总览 可以查询下表来总览Django的内置过滤器: 过滤器 说明 add 加法 addslashes 添加斜杠 capfirst 首字母大写 center 文本居中 cut 切除 ...
- Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档
前言 基本环境 Django版本:1.11.8 Python版本:3.6 OS: win10 x64 本文摘要 提供了常用的Django内置过滤器的详细介绍,包括过滤器的功能.语法.代码和效果示例. ...
- 框架----Django内置Admin
Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件,使用方式有: 依赖APP: django.contrib.auth django.contrib.contenttyp ...
- Django内置Admin解析
Django 内置的admin是对于model中对应的数据表进行增删改查提供的组建 一.Django admin的内部依赖: 依赖的app django.contrib.auth django.con ...
随机推荐
- mongodb初体验
最近关注大数据,自然会关注到nosql数据库,其中当然是mongodb. nosql数据库大多是k,v数据库,这也不是新鲜的名词了,berkerly DB已经存在很多年了,现在属于oracle. 具体 ...
- HDU 3374 String Problem (KMP+最小最大表示)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=3374 [题目大意] 给出一个字符串,求出最小和最大表示是从哪一位开始的,并且输出数量. [题解] ...
- linux下安装python3.3.4
下载安装包 # wget http://www.python.org/ftp/python/3.3.4/Python-3.3.4.tgz 解压 # tar -xzvf Python-3.3.4.tgz ...
- c#中常用的异常类型
c#中异常捕获catch{}常用的异常类型 Exception 类 描述 SystemException 其他用户可处理的异常的基本类 ArgumentException 方法的参数是非法的 ...
- list根据所存对象属性排序
比如有个list,里面存的是一个个对象,对象有个list属性,其值可以是字符串和数字. private void getSortList(List<AclResource> newList ...
- Java 网络编程(二) 两类传输协议:TCP UDP
链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951841.html 两类传输协议:TCP,UDP TCP TCP是Transfer C ...
- pure学习笔记
最近研究Pure,发现这个对于写css来说确实是个好的框架,特此总结了一番,如有错误或不足的地方,欢迎交流指点,轻拍. 此文运用的是优雅的Markdown而书 Pure学习笔记 #写在最前 1# Pu ...
- 神奇的魔法数字0x61c88647
来源JDK源码,产生的数字分布很均匀 用法代码如下. # -*- coding: utf-8 -*- HASH_INCREMENT = 0x61c88647 def magic_hash(n): fo ...
- 【算法】求多个数组中的交集(Java语言实现)
简介: 最近在工作中遇到一个问题,需要离线比较两张Mongodb表的差异:大小差异,相同的个数. 所以,我将导出的bson文件转成了json文件(2G以上),一条记录正好是一行. 问题: 因此我将以上 ...
- pexpect-pxssh-登陆Linux-执行命令
#!/usr/bin/python import pexpect import pxssh try: remote=pxssh.pxssh() hostname=raw_input('hostname ...