热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

django模板内建标签

autoescape控制当前自动转义的行为,有on和off两个选项{%autoescapeon%}{{body}}{%endautoescape%}block定义一个子模板可以覆

autoescape

控制当前自动转义的行为,有on和off两个选项

{% autoescape on %}
{{ body }}
{% endautoescape %}

block

定义一个子模板可以覆盖的块,在模板中(上一节)有使用示例

comment

注释,{% comment %} 和 {% endcomment %}之间的内容被解释为注释

crsf_token

一个防止CSRF攻击(跨站点请求伪造)的标签

cycle

循环给出的字符串或者变量,可以混用

{% for o in some_list %}
<tr class="{% cycle 'row1' rowvalue2 'row3' %}">
...
tr>
{% endfor %}

值得注意的是,这里的变量的值默认不是自动转义的,要么你相信你的变量,要么你就是用强制转义的方法,

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

在某些情况下,你可能想循环外部引用循环的下一个值,这时你需要用as给cycle标签一个名字,这个名字代表的是当前循环的值,但你可以在cycle标签里面是用这个变量来获得循环的下一个值

<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>

渲染的结果是

<tr>
<td class="row1">...td>
<td class="row1">...td>
tr>
<tr>
<td class="row2">...td>
<td class="row2">...td>
tr>

但是cycle标签一旦定义,默认就会用循环的第一个值,当你仅仅是想定义一个循环,而不想打印循环的值的时候(比如你在父模板定义变量以方便继承),你可以是用cycle的silent参数(必须保证silent是cycle的最后一个参数,并且silent也具有继承的特点,尽管第二行的cycle没有silent参数,但由于rowcoclors是前面定义的且包含silent参数的,第二个cycle也具有silent 循环的特点

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

debug

输出所有的调试信息,包括当前上下文和导入的模块

extends

表示说当前模板继承了一个父模板

接受一个包含父模板名字的变量或者字符串常量

filter

通过可用的过滤器过滤内容,过滤器之间还可以相互(调用)

{% filter force_escape|lower %}
This text will be HTML-escaped, and will appear in all lowercase.
{% endfilter %}

firstof

返回列表中第一个可用(非False)的变量或者字符串,注意的是firstof中的变量非自动转义

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

for

for循环,可以在后面加入reversed参数遍历逆序的列表

{% for obj in list reversed %

你还可以根据列表的数据来写for语句,例如对于字典类型的数据

{% for key, value in data.items %}
{{ key }}: {{ value }}
{% endfor %}

for循环还有一系列有用的变量

变量  描述
forloop.counter 当前循环的索引,从1开始
forloop.counter0 当前循环的索引,从0开始
forloop.revcounter 当前循环的索引(从后面算起),从1开始
forloop.revcounter0 当前循环的索引(从后面算起),从0开始
forloop.first 如果这是第一次循环返回真
forloop.last 如果这是最后一次循环返回真
forloop.parentloop 如果是嵌套循环,指的是外一层循环

for...empty

如果for循环的参数-列表为空,将执行empty里面的内容

<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}li>
{% empty %}
<li>Sorry, no athlete in this list!li>
{% endfor %}
<ul>

if

条件语句

{% if athlete_list %}
Number of athletes: {{ athlete_list|length }}
{% elif athlete_in_locker_room_list %}
Athletes should be out of the locker room soon!
{% else %}
No athletes.
{% endif %}

布尔操作符

在if标签里面可以使用and,or和not三个布尔操作符

==,!=,<,>,<=,>=,in,not in等操作符

这些操作符就不一一详细说了,一目了然

在if标签里面,这些操作符可以做成复杂的表达式

ifchange

检测一个值在循环的最后有没有改变

所以这个标签实在循环里面是用的,有两个用法:

  • 没有接受参数时,比较的是ifchange标签里面的内容相比以前是否有变化,有变化时生效
  • 接受一个或以上各参数的时候,如果有一个或者以上的参数发生变化时,有变化时生效

ifchange可以有else标签

{% for match in matches %}
<div style="">red" "blue" %}
{% else %}
grey
{% endifchanged %}
">{{ match }}div>
{% endfor %}

ifequal

仅当两个参数相等的时候输出块的内容,可以配合else输出

{% ifequal user.username "adrian" %}
...
{% endifequal %}

ifnotequal

跟ifequal类似

include

加载一个模板并用当前上下文(include该模板的模板的上下文)渲染它,接受一个变量或者字符串参数

当然你也可以在include的时候传递一些参数进来

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

如果你只想接受传递的参数,不接受当前模板的上下文时,你可以是用only参数

{% include "name_snippet.html" with greeting="Hi" only %}

load

加载一个自定义的模板标签集合,见单独的一节讲解

now

显示当前的时间日期,接受格式化字符串的参数

It is {% now "jS F Y H:i" %}

参数有已经定义好的一些参考参数: DATE_FORMAT(月日DATETIME_FORMAT(月日年时),SHORT_DATE_FORMAT(月/日/ or SHORT_DATETIME_FORMAT(月/日/年/时)

regroup

通过共同的属性对一个列表的相似对象重新分组,加入你有一个城市(city)的列表如下

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'},
]

你想按照国家country这个属性来重新分组已得到下面的结果,那么你可以这么做

  • 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 cities by country as country_list %}


    {% for country in country_list %}
  • {{ country.grouper }}

      {% for item in country.list %}
    • {{ item.name }}: {{ item.population }}

    • {% endfor %}


  • {% endfor %}

值得注意的是,regroup并不会重新排序,所以,请确保city在regroup之前已经按country排好序,否则将得不到你预期想要的结果,如果不确定可以用dictsort过滤器排序

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

spaceless

移除html标签之间的空格,注意是标签之间的空格,标签与内容之间的空格不会被删除

{% spaceless %}


"foo/">Foo


{% endspaceless %}

结果是

"foo/">Foo

ssi

在页面上输出给定文件的内容

{% ssi /home/html/ljworld.com/includes/right_generic.html %}

使用parsed参数可以使得输入的内容可以作为一个模板从而可以使用当前模板的上下文

{% ssi /home/html/ljworld.com/includes/right_generic.html parsed %}

url

返回一个绝对路径的引用(没有域名的url),接受的第一个参数是一个视图函数的名字,然后从urls配置文件里面找到那个视图函数对应的url,

widthratio

这个标签计算给定值与最大值的比率,然后把这个比率与一个常数相乘,返回最终的结果

<img src="bar.gif" height="10" width="{% widthratio this_value max_value 100 %}" />

with

 用更简单的变量名缓存复杂的变量名

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

尽管初衷是这样,但你不必都是如此,哈哈

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

django内建标签到此给大家过了一遍了

原文链接:http://www.cnblogs.com/qwj-sysu/p/4198584.html
推荐阅读
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • 如何使用Python从工程图图像中提取底部的方法?
    本文介绍了使用Python从工程图图像中提取底部的方法。首先将输入图片转换为灰度图像,并进行高斯模糊和阈值处理。然后通过填充潜在的轮廓以及使用轮廓逼近和矩形核进行过滤,去除非矩形轮廓。最后通过查找轮廓并使用轮廓近似、宽高比和轮廓区域进行过滤,隔离所需的底部轮廓,并使用Numpy切片提取底部模板部分。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
author-avatar
尹琢抵
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有