一、变量

def dtl(request):num = 3.14ss = 'abc123嘿嘿'# return render(request, 'django_dtl.html', {'number': num, 'ss': ss})result = Truelist = [1, 2, 3, 4, 5]dic = {'name': 'owen', 'age': 28}# 函数不能带有参数,模板中{{ fn }} 本质就是调用函数拿到函数值(函数的返回值)def fn():return "fn function"class Person:name = "name"def __str__(self):return "这是Person类"p = Person()# locals()存放当前作用域中所有的名字return render(request, 'django_dtl.html', locals())-----html
<li>{{ num }}</li>
<li>{{ list }} -- {{ list.0 }}</li>
<li>{{ dic }} -- {{ dic.age }}</li>
<li>{{ Person }}</li>  # Person() => __str__的返回值
<li>{{ 123 }}</li>  # 也可以直接写数字、字符串、布尔值

二、过滤器

1.语法:-- {{ 变量|过滤器1[[:参数]|...|过滤器n[:参数]] }}-- 注:过滤器可以串联操作,可以拥有0个或1个参数
​
2.常见内置filter-- 增加   add:num-- 字符串长度   length-- 默认值   default:'默认值'  # 变量不存在或为空-- 全大写   upper-- 全小写   lower-- 切片   slice:'0:-1'-- 将数字转换为文件大小   filesizeformat-- 字符串隐藏   truncatechars:13   # 只显示10个字符,后置字符都用...来替代-- 时间   date:'Y-m-d'-- 转换原意   safe

三、标签

1.语法:-- {% 关键词 arg1 ... argn %}  eg: {% url 'test' 1 2 3 %} => /test/1/2/3/
​
2.常用:-- 反向解析url   {% url 'namespace:url_name' arg1 arg2 %}-- 当前时间now   {% now 'Y-m-d' %}-- 起别名with   {% with '后面的别名flag就代表我' as flag %} {{ flag }} {% endwith %}-- Django CSRF认证   {% csrf_token %}

四、分支

语法:
{% if 条件1 %}结论1
{% elif 条件2 %}结论2
{% else %}结论n
{% endif %}
​
注:
1. if的条件可以添加filter
2. 可以嵌套

五、迭代器

{% for foo in iterate %}{{ forloop }}
{% empty %}可迭代对象为空
{% endfor %}
​
注:
1. iterate为可迭代对象
2. iterate可以添加filter
3. forloop变量为存放迭代信息的字典,父级forloop字典,开始索引从0编号或1编号,倒序索引从0编号或1编号,是否是第一次或最后一次循环
4. empty分支会在可迭代对象不存在或空时执行

六、自定义过滤器与标签

步骤:
1. 在注册的app下创建templatetags包
2. 在模板中自定义模块py文件,如:owen_tags.py
3. 要在使用自定义filter与tag的模板页面中加载自定义模块py文件,案例:{% load owen_tags %}
​
4. 自定义filter语法
from django.template import Library
register = Library()
@register.filter(name='jump')
def owen_jump(value, arg):try:return value * int(arg)except (ValueError, TypeError):return ''5. 自定义tag语法
@register.simple_tag(name='add_two')
def owen_add(arg1, arg2):try:return int(arg1) + int(arg2)except (ValueError, TypeError):try:return arg1 + arg2except Exception:return ''6. 在加载了自定义模块py文件的模板页面中使用,案例:
{{ 10|jump:2}}  # 10 * 2
{% add_two 10 20 %}  # 10 + 20

七、html案例

<h1>Django模板语言</h1>
<hr>
<h2>变量</h2>
<ul>
{#    <li>{{ number }}</li>#}<li>{{ num }}</li><li>{{ ss }}</li><li>{{ result }}</li><li>{{ list }} -- {{ list.0 }}</li><li>{{ dic }} -- {{ dic.age }}</li><li>{{ fn }}</li><li>{{ Person }}</li><li>{{ p.name }}</li><li>{{ 123 }}</li><li>{{ 'abc' }}</li>
</ul>
<hr>
<h2>过滤器</h2>
<ul><li>{{ num|add:1 }}</li><li>{{ ss|length }}</li><li>{{ 150|add:100|add:-50 }}</li><li>{{ 'Abc'|upper|lower }}</li><li>{{ '123456789'|truncatechars:6 }}</li><li>{{ '123456789'|slice:'1:-1' }}</li><li>{{ number|default:"number不存在或值为False" }}</li><li>{{ time|date:'Y年m月d日 h:i:s' }}</li><li>{{ time|date 'F' }}</li><li>{{ time|safe }}</li><li>{{ link|safe }}</li><li>{{ file_size|filesizeformat }}</li>
</ul>
<hr>
<h3>标签</h3>
<ul><li>{% url 'test' 1 2 3 %}</li><li>{# 起别名 #}{% with link|safe as lk %}{{ lk }}{{ lk }}{{ lk }}{% endwith %}{% with n='123456789' %}{{ n }}{{ n }}{{ n }}{% endwith %}</li><li>{% now 'F' %}</li><li>
{#        <form action="" method="post">#}{# 该页面为Django自身渲染, 渲染时告诉页面自身的认证条件,该页面发送post请求都可以通过认证 #}
{#            {% csrf_token %}#}
{#            <input type="submit">#}
{#        </form>#}</li><li>{% with 10|add:0 as num %}{% if num|add:0 > 10 %}<p>num值大于10</p>{% elif num|add:0 == 10 %}<p>num值等于10</p>{% else %}{% if num|add:0 > 5 %}<p>num介于5与10</p>{% else %}<p>num不大于5</p>{% endif %}{% endif %}{% endwith %}</li><li>{% for n in 31425|make_list %}<p>{{ forloop }}</p><p>第{{ forloop.counter }}次迭代</p><p>{{ n }}</p><hr>{% endfor %}</li><li>{% for l in ll %}
{#            <p>{{ foo }}</p>#}
{#            <hr>#}
{#            <p>外层第{{ forloop.counter }}循环</p>#}{% for n in l %}
{#                <p>内层第{{ forloop.counter }}循环</p>#}<p>外层{{ forloop.parentloop.counter }} - 内层{{ forloop.counter }}</p>{{ n }}<hr>{% endfor %}{% empty %}<p>迭代的ll不存在或为空</p>{% endfor %}</li>
</ul>
<hr>
<h2>自定义过滤器与标签</h2>
{% load zero_tags %}<p>{{ 123|jump:2 }}</p><p>{% add_three 10 20 30 %}</p>

View Code

八、全系统过滤器

{{ 123|add:"5" }} 给value加上一个数值
{{ "AB'CD"|addslashes }} 单引号加上转义号,一般用于输出到javascript中
{{ "abcd"|capfirst }} 第一个字母大写
{{ "abcd"|center:"50" }} 输出指定长度的字符串,并把值对中
{{ "123spam456spam789"|cut:"spam" }} 查找删除指定字符串
{{ value|date:"F j, Y" }} 格式化日期
{{ value|default:"(N/A)" }} 值不存在,使用指定值
{{ value|default_if_none:"(N/A)" }} 值是None,使用指定值
{{ 列表变量|dictsort:"数字" }} 排序从小到大
{{ 列表变量|dictsortreversed:"数字" }} 排序从大到小
{{ string|escape }} 转换为html实体
{{ 21984124|filesizeformat }} 以1024为基数,计算最大值,保留1位小数,增加可读性
{{ list|first }} 返回列表第一个元素
{{ "ik23hr&jqwh"|fix_ampersands }} &转为&
{{ 13.414121241|floatformat }} 保留1位小数,可为负数,几种形式
{{ 13.414121241|floatformat:"2" }} 保留2位小数
{{ 23456 |get_digit:"1" }} 从个位数开始截取指定位置的1个数字
{{ list|join:", " }} 用指定分隔符连接列表
{{ list|length }} 返回列表个数
{% if 列表|length_is:"3" %} 列表个数是否指定数值
{{ "ABCD"|linebreaks }} 用新行用
{{ "ABCD"|linebreaksbr }} 用新行用 标记包裹
{{ 变量|linenumbers }} 为变量中每一行加上行号
{{ "abcd"|ljust:"50" }} 把字符串在指定宽度中对左,其它用空格填充
{{ "ABCD"|lower }} 小写
{{ "abcdefghijklmnopqrstuvwxyz"|phone2numeric }} 把字符转为可以对应的数字??
{{ 列表或数字|pluralize }} 单词的复数形式,如列表字符串个数大于1,返回s,否则返回空串
{{ 列表或数字|pluralize:"es" }} 指定es
{{ 列表或数字|pluralize:"y,ies" }} 指定ies替换为y
{{ object|pprint }} 显示一个对象的值
{{ 列表|random }} 返回列表的随机一项
{{ string|removetags:"br p div" }} 删除字符串中指定html标记
{{ string|rjust:"50" }} 把字符串在指定宽度中对右,其它用空格填充
{{ 列表|slice:":2" }} 切片
{{ string|slugify }} 字符串中留下减号和下划线,其它符号删除,空格用减号替换
{{ 3|stringformat:"02i" }} 字符串格式,使用Python的字符串格式语法
{{ "EABCD"|striptags }} 剥去[X]HTML语法标记
{{ 时间变量|time:"P" }} 日期的时间部分格式
{{ datetime|timesince }} 给定日期到现在过去了多少时间
{{ datetime|timesince:"other_datetime" }} 两日期间过去了多少时间
{{ datetime|timeuntil }} 给定日期到现在过去了多少时间,与上面的区别在于2日期的前后位置。
{{ datetime|timeuntil:"other_datetime" }} 两日期间过去了多少时间
{{ "abdsadf"|title }} 首字母大写
{{ "A B C D E F"|truncatewords:"3" }} 截取指定个数的单词
{{ "111221"|truncatewords_html:"2" }} 截取指定个数的html标记,并补完整
{{ list|unordered_list }} 多重嵌套列表展现为html的无序列表
{{ string|upper }} 全部大写
{{ string|urlize }} 将URLs由纯文本变为可点击的链接。(没有实验成功)
{{ string|urlizetrunc:"30" }} 同上,多个截取字符数。(同样没有实验成功)
{{ "B C D E F"|wordcount }} 单词数
{{ "a b c d e f g h i j k"|wordwrap:"5" }} 每指定数量的字符就插入回车符
{{ boolean|yesno:"Yes,No,Perhaps" }} 对三种值的返回字符串,对应是 非空,空,None

 

转载于:https://www.cnblogs.com/peng-zhao/p/10458692.html

Djiango模板语言DTL相关推荐

  1. python语言的格式框架_django框架模板语言使用方法详解

    本文实例讲述了django框架模板语言使用方法.分享给大家供大家参考,具体如下: 模板功能 作用:生成html界面内容,模版致力于界面如何显示,而不是程序逻辑.模板不仅仅是一个html文件,还包括了页 ...

  2. html语言可以写模版继承吗,16-Django的模板语言(变量,标签,过滤器,继承,html转义)...

    模板语言 模板语言简称为DTL(Django Template Language) 模板变量 模板变量名由数字,字母,下划线和点组成,不能以下划线开头. 使用:{{模板变量名}} def index2 ...

  3. velocity 模板语言(VTL)

    一 是什么 velocity是一种让web设计者易于掌握和使用的模板语言,主要目的是简化web动态页面的开发.为了获取这种语言的支持,你需要java基础类集合,才能在MVC的model模型和view视 ...

  4. java语言for模板_java版的模板语言

    最近心血来潮,开发了一个小工具,为了方便以后定制模板,打算使用模板语言,之前在项目中用过freemark和velocity,对于它们的语法都不喜欢,还是重造个轮子吧,哈哈. 先贴段代码吧: test ...

  5. Django之ORM使用以及模板语言

    一.ORM版增删改查 1.ORM的语句 1.类名.objects.all()          --> 返回一个列表 2.类名.objects.filter()       --> 返回一 ...

  6. 第三百一十节,Django框架,模板语言

    第三百一十节,Django框架,模板语言 模板语言就是可以将动态数据在html模板渲染的语言 一.接收值渲染 locals()函数,写在请求响应render()函数里,可以将逻辑处理函数里的变量传到h ...

  7. Django模板语言(译)

    原文地址:https://docs.djangoproject.com/zh-hans/2.1/ref/templates/language/ 翻译日期:2019年3月8日-2019年3月9日 by: ...

  8. 13.2.4 模板层——模板语言

    Django约定将所有的HTML文档都放在templates文件夹下,注意,templates是模板的意思,这是因为放在templates文件夹下的并不全是HTML文档,如果文档中包含Django的模 ...

  9. Django模板语言

    常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} 变量名由字母数字和下划线组成. 点(.)在模板语言中有特殊的含义, ...

最新文章

  1. TOMCAT9 如何突破的双亲委派机制
  2. vuex——做简单的购物车功能
  3. 80核处理器_标压版锐龙处理器更香!联想小新Pro 13轻薄笔记本评测
  4. 反转一个单链表,分别以迭代和递归的形式来实现
  5. 服务器一直运行python_【已采纳】supervisor在服务器端(linux),如何一直运行你的python代码...
  6. 怎样让网站显示在 Google 搜索结果中?
  7. java常见异常注解
  8. WinCE下Touch Panel驱动介绍
  9. SPSS个案处理插件v1.0 用SPSS构造Bootstrap样本
  10. matlab点扩散函数代码,点扩散函数(Point Spread Function)
  11. 微信小程序云开发(云数据库的使用)
  12. 2020寒假第三周总结
  13. 下载Macromedia FLASHPAPER
  14. 【ITSM】什么是ITSM,IT部门为什么需要ITSM
  15. 18数藏,太一捡漏,抢购,
  16. 解救小哈——广度优先搜索bfs
  17. 自然语言处理评测汇总(持续更新)
  18. 超酷震撼 HTML5/CSS3动画应用及源码
  19. 【js】复选框,复选下拉框,文本框勾连
  20. 金刚菩提子开裂自动修复此计算机,教你一招修复开裂的金刚菩提

热门文章

  1. 深入理解PHP内核(五)函数的内部结构
  2. 如何学习android高级编程
  3. ASP.NET MVC 5 - 视图
  4. 百度、谷歌理念对对碰
  5. ios集成firebase_如何将Firebase与您的应用程序集成
  6. vue.js crud_如何使用VS Code和ADO.NET使用ASP.NET Core执行CRUD操作
  7. JavaScript对象,方括号和算法
  8. linux pps 包 网卡,linux下安装PPS
  9. 1027 Colors in Mars
  10. hung-yi lee_p18_图神经网络(cont.)