当前位置: 首页 > 编程日记 > 正文

Djiango模板语言DTL

一、变量

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

相关文章:

设计模式 之美 -- 面向对象(C/C++分别实现)

文章目录前言封装C实现C 实现继承C 实现C实现前言 为了保证代码的可复用性、可扩展性、可维护性&#xff0c;我们提出了面向对象的思想。 面向对象的核心特性有以下几个 封装特性 信息隐藏或者数据访问保护。类通过暴露有限的访问接口&#xff0c;授权外部仅能通过类提供的方…

数据结构编程实战汇总

出自数据结构与算法分析第二版&#xff08;C&#xff09; 一 引论二 算法分析三 表 栈 队列四 树五 散列六 优先队列七 排序 优先队列实现事件模拟 &#xff1a;http://maozj.iteye.com/blog/676567d堆 左式堆 斜堆&#xff1a; http://blog.csdn.net/yangtrees/article/detai…

同时支持三个mysql+sqlite+pdo的php数据库类_同时支持三个MySQL+SQLite+PDO的PHP数据库类...

PHP学习教程文章简介&#xff1a; 同时支持三个MySQLSQLitePDO的PHP数据库类使用方法: // mysql connect $db new SQL(mysql:hostlocalhost;database21andy_blog;, 21andy.com_user, 21andy.com_password); // PDO SQLite3 connect $db new SQL(pdo:database/21andy.com/21an…

VB6基本数据库应用(五):数据的查找与筛选

同系列的第五篇&#xff0c;上一篇在&#xff1a;http://blog.csdn.net/jiluoxingren/article/details/9633139 数据的查找与筛选 第4篇发布到现在已经过了4天&#xff0c;很抱歉&#xff0c;学生党&#xff0c;还是悲催的高三&#xff0c;没办法&#xff0c;8月1就开学了。以后…

学习进度条(第一周)

学习进度条&#xff1a; 第一周 所花时间&#xff08;包括上课&#xff09; 5h 代码量&#xff08;行&#xff09; 150 博客量&#xff08;篇&#xff09; 2 了解到的知识点 这种主要是对上学期web知识的一个回顾&#xff0c;进行了第一次开学测验&#xff0c;了解了实…

设计模式 之美 -- 单例模式

为什么要使用单例&#xff1f; 一个类只允许创建一个对象或者实例。 背景简介&#xff1a;使用多线程并发访问同一个类&#xff0c;为了保证类的线程安全&#xff0c;可以有两种方法&#xff1a; 将该类定义为单例模式&#xff0c;即该类仅允许创建一个实例为该类的成员函数添…

(int),Int32.Parse() 和 Convert.toInt32() 的区别

在 C# 中&#xff0c;(int)&#xff0c;Int32.Parse() 和 Convert.toInt32() 三种方法有何区别? int 关键字表示一种整型&#xff0c;是32位的&#xff0c;它的 .NET Framework 类型为 System.Int32。 (int)表示使用显式强制转换&#xff0c;是一种类型转换。当我们从 int 类型…

MySQL留言板怎么创建_如何使用JSP+MySQL创建留言本(三)

如何使用JSPMySQL创建留言本(三)推荐查看本文HTML版本下面我们开始建立留言的页面&#xff01;import "java.util.*"import "java.text.*"import"java.sql.*"import "java.io.*"import "java.lang.*"contentType"t…

刚子扯谈:微信 今天你打飞机了嘛吗?

文/刚子 2013年8月5日 开片语:昨日爆爬二坨山后&#xff0c;精神豁然靓丽。虽然晒伤的不算厉害&#xff0c;但是还是有同事关切。说刚子你真黑了。好吧&#xff01;当然今天咱不扯爬山涉水&#xff0c;也不扯刚子咋就黑了&#xff0c;咱扯今天那个“热”。也许有部分朋友已经猜…

OMS API

plot cd("C:/……/") 转载于:https://www.cnblogs.com/Pusteblume/p/10467200.html

设计模式 之美 -- 简单工厂模式

文章目录1. 解决问题2. 应用场景3. 实现C实现&#xff1a;C语言实现4. 缺点1. 解决问题 举例如下&#xff1a; 我们实现一个卖衣服的功能&#xff0c;衣服的种类有很多&#xff1a;帽子&#xff0c;裤子&#xff0c;T恤。。。 每卖一种衣服&#xff0c;我们都要进行一次实例化…

mysql 分表原理_MYSQL 分表原理(转)

简介:引用MySQL官方文档中的一段话:MERGE存储引擎,也被认识为MRG_MyISAM引擎,是一个相同的可以被当作一个来用的MyISAM表的集合."相同"意味着所有表同样的列和索引信息.你不能合并列被以不同顺序列于其中的表,没有恰好同样列的表,或有不同顺序索引的表.而且,任何或者…

popStar手机游戏机机对战程序

DFS算&#xff0c;五分钟如果答案没有更新&#xff0c;那个解一般来说就很优了。 #include <cstdio> #include <iostream> #include <string.h> #include <cstdlib> #include <algorithm> #include <queue> #include <vector> #incl…

ps aux参数说明

运行 ps aux 的到如下信息&#xff1a; ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDsmmsp 3521 0.0 0.7 6556 1616 ? Ss 20:40 0:00 sendmail: Queue runner01:00:00 froot 3532 0.0 0.2 2428 …

myeclipse使用maven整合ssh配置

最近写项目&#xff0c;由于公司需求&#xff0c;使用myeclispe来开发maven项目&#xff0c;关于maven就不再介绍,无论是jar包管理功能&#xff0c;还是作为版本构建工具&#xff0c;优点自然是很多&#xff0c;下面先贴出所需要的配置文件。 maven所需要的 pom.xml 1 <proj…

C语言 #ifndef 引起的redefinition of xxx 问题解决

问题如下 多个.c和.h文件 其中cloth.h分布被hat.h和paths.h包含&#xff0c;编译时出现如下问题&#xff1a; error: redefinition of struct _Cloth 我的cloth.h定义如下&#xff1a; #include <stdio.h> #include <stdlib.h> #include "retval.h"…

mysql如何下载连接到visual_Visual Studio 2015 Community连接到Mysql

Visual Studio 2015 Community连接到MySQL&#xff0c;步骤很简单&#xff0c;但刚弄的时候一脸懵&#xff0c;现在记录如下以作备忘&#xff1a;安装好VS2015和Mysql后&#xff0c;只需要再安装两个东西即可。一个是SDK&#xff1a;MySQL for Visual Studio另一个是驱动&#…

web.py下获取get参数

比较简单&#xff0c;就直接上代码了&#xff1a; import web urls (/, hello ) app web.application(urls, globals()) class hello: def GET(self):print web.input()return "GET hello world"def POST(self):print web.input()return "POST hello w…

ORACLE 体系结构知识总结

ORACLE 体系结构.Oracle 体系结构图&#xff1a;.1.ORACLE 实例.1.1. Oracle 实例Oracle实例包括内存结构和后台进程System Global Area(SGA) 和Background Process 称为数据库实例文件。.2. Oracle 数据库一系列物理文件的集合&#xff08;数据文件&#xff0c;控制文件&#…

余额宝技术架构读后感

本次阅读文章为&#xff1a;余额宝技术架构及演讲 文章地址&#xff1a;https://mp.weixin.qq.com/s?__bizMzAwMDU1MTE1OQ&mid2653547540&idx1&snb3f568ba4bd1c4a0a2d35c0e5ef033cc&scene21#wechat_redirect 通过阅读“余额宝技术架构及演讲”&#xff0c;了解…

网络故障排查命令

ping #检测目标主机是否畅通traceroute #追踪路由mtr #检查到目标主机之间是否有数据包丢失nslookup #查看域名并解析&#xff0c;获取IP地址telnet #检查端口链接状态tcpdump #细致分析数据包发送接收 的详细内容netstat #查看网络端口连接状态ss #另外一种各式的查看网络端口…

Java程序猿面试题集(181- 199)

Java面试题集&#xff08;181-199&#xff09; 摘要&#xff1a;这部分是包括了Java高级玩法的一些专题&#xff0c;对面试者和新入职的Java程序猿相信都会有帮助的。 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 转载于…

mysql四维数组_MySQL如何实现数组功能

前段时间想要用数组功能实现某些需求&#xff0c;结果发现mysql不支持数组&#xff0c;这个确实让人很头痛。查阅官方文档&#xff0c;也没有这一方面的资料。结果在网上&#xff0c;看到了某仁兄贴出了变相实现的一种方法&#xff0c;代码如下&#xff1a;DELIMITER ;DROP DAT…

在iOS上使用ffmpeg播放视频

国外靠谱的有这几个&#xff1a;1、Mooncatventures group https://github.com/mooncatventures-group2、KxMoviePlayer (use OpenGLES, Core Audio) https://github.com/kolyvan/kxmovie3、FFmpeg for ios (with OpenGLES, AudioQueue) https://github.com/flyhawk007/FFmpeg-…

shell --- trap 抓取信号

1. 解决问题 针对部分运行在生产环境中的脚本来说&#xff0c;有一些脚本运行的过程是不能被中断的&#xff0c;比如&#xff1a;生产环境 定期备份脚本&#xff0c;为了保证备份安全&#xff0c;备份期间不能被 SIGTERM和SIGINT 之类的中断信号中断。 该种类型的脚本逻辑增加…

python运行错误怎么查找_求助,python的二分法查找,按照视频上的代码写下来,结果运行错误...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼def bsearch(s,e,first,last,calls):print(first,last,calls)if (last-first) < 2: return s[first] e or s[last]mid first (last - first)/2if s[mid] e: return Trueif s[mid] > e: return bsearch(s,e,first,mid-1,c…

system.out 汉字乱码

使用sts时&#xff0c;文件编码都设置成了UTF-8&#xff0c;使用system.out.println输出汉字时&#xff0c;出现乱码。 解决方案&#xff1a; run>run configurations>common>encoding修改为gbk就可以了。转载于:https://www.cnblogs.com/javaleon/p/4075341.html

三阶段day1

1、动态网页 和 静态网页动态网页&#xff1a;数据可以进行交互 动态改变数据2、nodenode是基于chrome的V8引擎的Javscript运行环境node中的事件机制以及非阻塞式的I/O式模型 使其轻量又高效node中的npm 是全球最大的包管理器 &#xff08;全球最大的垃圾网站&#xff09;I:inp…

Oracle 12c DG备库Alert报错ORA-01110

环境是12.2.0.1 version, Oracle Data Guard备库近段时间一直报错&#xff0c;但是备库主库同步一致&#xff0c;数据一致。2019-03-06T23:42:22.18404808:00 Errors in file /u01/app/oracle/diag/rdbms/ccdb/ccdb/trace/ccdb_m000_129832.trc: ORA-01110: data file 7: /u01/…

linux的 计划任务机制,自己带节奏

文章目录1. 解决问题2. 计划任务分类3. 一次性计划任务实现添加计划步骤注意事项4. 周期性计划任务实现cron和crontab命令5. 延时计划任务6. flock脚本加锁&#xff0c;保证单实例运行1. 解决问题 环境中有脚本需求&#xff0c;周期性运行或者固定时间运行脚本&#xff0c;为了…