Django(六、模板层)

文章目录

  • 模板传值
      • 模板语法传值特性
  • 模板语法之过滤器
      • 常用的过滤器
      • 模板层之标签
            • 模板中的标签的格式为
            • 标签之if判断
      • 标签之for循环
      • 模板的继承与导入
            • 模板导入
            • 导入格式

在这里插入图片描述

模板传值

"""
模板层三种语法
{{}}:主要与数据值相关
{%%}:主要与逻辑相关
{##}:模板注释django的模板语法是自己写的 跟jinja2不一样1.针对需要加括号调用的名字 django模板语法会自动加括号调用你只需要写名字就行
2.模板语法的注释前端浏览器是无法查看的 {##},模板语法{##}是由后端处理的,当识别为模板注释时就会从html文件中移除了,不会返回给用户;而html注释<!---->是由前端浏览器对html处理时渲染时不做处理,但检查网页源码时还是能看见这些注释的。"""1.模板语法传值  字典和locals()return render(request, 'demo02.html', {'n1': name, 'a1': age})  # 传值方式1:精准传值 不浪费资源 针对多资源的传递书写麻烦return render(request,'demo02.html', locals())  # 传值方式2:将函数名称空间中所有的名字全部传递 名字过多并且不使用的情况下比较浪费资源

模板语法传值特性

1.基本数据类型正常展示
2.文件对象也可以展示并调用方法
3.函数名也会自动加括号并执行将返回值展示到页面上(不支持额外传参)
4.类名也会自动加括号调用
5.对象不会加括号,但可以获取对象的一些数据属性
6.索引、键、属性只能通过句点方式取值
针对可以加括号调用名字模板语法都会自动加括号调用
在这里插入图片描述

模板语法之过滤器

语法:{{ value|过滤器名:参数 }}
过滤器用管道符隔开(无空格),最多支持多传入一个参数。
过滤器是支持链式的,可以将多个过滤器串起来,上一个过滤器的输出作为下一个的输入

常用的过滤器

过滤器功能示例
default如果一个变量是false或者为空,使用给自定的值。 反之,使用变量的值。{{ value|default:“nothing”}}
length对于字符串列表这类有length属性的,得到其值的长度{{ value|length}}
filesizeformat将传入的数字当做文件的字节数,将其处理成合适展示的文件大小,如2048就会展示为2 KB |{{ valuefilesizeformat }}
slice对字符串进行切片{{value|slice:“2:-1”}}
add将传入的数字或字符串做相加或拼接处理{{ value|length}}
safe模板语法默认转义带html语法的文本,safe取消标签文本转义,让其可以被html渲染{{ value|safe}}
truncatechars如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“…”)结尾。{{ value|truncatechars:9}}
truncatewords在一定数量的字后截断字符串,处理同上…。{{ value|truncatewords:9}}
cut移除value中所有的与给出的变量相同的字符串如果value为’i love you’,那么将输出’iloveyou’.{{ value|cut:’ ’ }}
timesincedatetime数据距离现在的时间(从现在起){{ blog_date|timesince }}
timeuntildatetime数据距离现在的时间(到现在止){{ blog_date|timesince }}
datedatetime数据字符化输出{{ value|date:“Y-m-d H:i:s”}}

模板层之标签

模板中的标签的格式为
# 1、
{% 标签名 %}# 2、大多数标签都需要接收参数
{% 标签名 参数1 参数2 %}# 3、一些标签需要有开始{% tag %}和结束标记{% endtag %}
{% 标签名 %}
...内容...
{% end标签名 %}

标签之forloop关键字,forloop模板语法自带的变量名

标签之if判断
在这里插入代码片格式:
{% if 条件1(可以自己写也可以用传递过来的数据) %}<p>今天又是周三了</p>
{% elif 条件2(可以自己写也可以用传递过来的数据) %}<p>我是列表</p>
{% else %}<p>我是else分支的!</p>
{% endif %}eg:# if判断
判断a是True打印{% if a %}<p>今天又是周三了</p>{% elif l1 %}<p>我是列表</p>
{% else  %}<p>我是else分支的</p>{% endif %}判断a传过来是true,打印今天又是周三了;a为false,则打印我是列表
a和l1都为false,则打印else分支

标签之for循环

for循环可用的一些参数:

VariableDescription
forloop.counter当前循环的索引(从1开始)
forloop.counter0当前循环的索引值(从0开始)
forloop.revcounter当前循环的倒序索引值(从1开始)
forloop.revcounter0当前循环的倒序索引值(从0开始)
forloop.first当前循环是第一次循环则返回True,否则返回False
forloop.last当前循环是最后一次循环则返回True,否则返回False
forloop.parentloop本层循环的外层循环
{% for i in l1 %}<p>{{ forloop }}</p><p>{{ i }}</p>
{% endfor %}

在这里插入图片描述
标签for与if混合使用及标签之empty

# for与if混合使用
{% for foo in l1 %}{% if forloop.first %}<p>这是我第一次循环</p>{% elif forloop.last %}<p>我是最后一次循环</p>{% else %}<p>{{ foo }}</p>{% endif %}{% empty %}<p>for循环的可迭代对象内部没有元素,根本没法循环</p>
{% endfor %}解析:
forloop.first: 判断本次循环是不是第一次,是,就执行下面的代码
forloop.last: 判断本次循环是不是最后一次,是,就执行下面代码
empty: 你给我传的数据是空的无法循环取值(空字符串、空列表、空字典)

在这里插入图片描述
循环字典

# 循环字典
1.循环键
{% for r in d1 %}<p>{{ r }}</p>
{% endfor %}2.循环键keys
{% for foo in d1.keys %}<p>{{ foo }}</p>
{% endfor %}3.循环值values
{% for foo in d1.values %}<p>{{ foo }}</p>
{% endfor %}4.items
{% for foo in d1.items %}<p>{{ foo }}</p>
{% endfor %}解析:.items	: 返回可遍历的(,) 元组数组。

在这里插入图片描述
with起别名
django模板语法取值操作:只支持点语法
点语法既可以索引也可以点键

with起别名方法取出字典中NB
user_dict = {'name':'jack', 'age':18, 'gender':'male', 'hobby':[111,222,333,{'info':'NB'}]}{% with user_dict.hobby.3.info as name %}<p>{{ name }}</p>
{% endwith %}

模板的继承与导入

模板的继承
当我们多个页面有相似的页面,我们可以采用下列方法

1.我们直接复制粘贴>>>创建一个新的html

2.模板的继承

1.在模板中使用block划定子板>>方便以后修改的区域{% block 区域名称 %}{% endblock%}
2.子版继承母板{% extends 'home.html'%}{% block 区域名称 %}子板自己的内容{% endblock%}注意:子板也可以继续使用子模板的内容{{block.super}}

关于模板中的继承,,至少有三个区域的模板可以继承去渲染,分别是页面内容区、CSS样式区、JS代码区

模板导入

提前将被导入的html页面写好。其他html页面想使用就可以导入

导入格式
 {% include '导入的html文件名'%}{% include 'myform.html'%}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/178704.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java-绘图

文章目录 Java绘图Java绘图类绘图颜色与画笔属性设置颜色设置画笔 绘制文本显示图片图像处理1、放大与缩小2、图像翻转3、图像旋转4、图像倾斜 End Java绘图 Java绘图是指在Java程序中创建和显示图形的过程。Java提供了许多类和方法来支持绘图。 Java绘图类 Java中主要的绘图类…

2023年05月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 有列表L=[‘UK’,‘china’,‘lili’,“张三”],print(L[-2])的结果是?( ) A: UK B: ‘lili’,‘张三’ C: lili D: ‘UK’,‘china’,‘lili’ 答案:C 列表元素定位 第2题 …

AI中文版怎么用,版本分享,GPT官网入口

网页版上线啦&#xff0c;在线助力大学生、上班族的高效生活&#xff01; GPT4.0是OpenAI最新推出的聊天模型&#xff0c;它的语言理解和生成能力比以前的版本更强大。对于忙碌的上班族来说&#xff0c;GPT4.0能帮助你高效处理工作中的大部分写作任务&#xff0c;比如撰写报告…

(Matalb回归预测)GWO-BP灰狼算法优化BP神经网络的多维回归预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分代码&#xff1a; 四、完整程序数据使用说明下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Mata…

攻防世界-web-unseping

1. 题目描述 打开链接&#xff0c;如下代码 代码都贴出来了&#xff0c;那么只需要分析代码即可&#xff0c;看是否存在漏洞以及如何利用 2. 思路分析 代码很简单&#xff0c;外部只需要接收cft这个参数&#xff0c;然后将这个参数反序列化后赋值给对量的method和args参数&a…

Linux C 进程间通信

进程间通信 概述进程间通信方式管道概述管道函数无名管道 pipe有名管道 makefifo删除有名管道 rmove 有名管道实现 双人无序聊天 例子 信号信号概述信号处理过程信号函数传送信号给指定的进程 kill注册信号 signal查询或设置信号处理方式 sigaction设置信号传送闹钟 alarm 有名…

Python爬取股票交易数据代码示例及可视化展示。

文章目录 前言一、开发环境二、第三方模块三、爬虫案例步骤四、爬虫程序全部代码1.分析网页2.导入模块3.请求数据4.解析数据5.翻页6.保存数据 五、实现效果六、数据可视化全部代码1.导入数据2.读取数据3.可视化图表4.效果展示关于Python技术储备一、Python所有方向的学习路线二…

Jenkins的一些其他操作

Jenkins的一些其他操作 1、代码仓库Gogs的搭建与配置 Gogs 是一款极易搭建的自助 Git 服务&#xff0c;它的目标在于打造一个最简单、快速和轻松的方式搭建 Git 服务。使用 Go 语言开发的它能够通过独立的二进制进行分发&#xff0c;支持了 Go 语言支持的所有平台&#xff0…

企业计算机中了eking勒索病毒如何解毒,eking勒索病毒文件恢复

网络技术的不断发展&#xff0c;为企业的生产生活提供了极大便利&#xff0c;但随之而来的网络安全威胁也不断增加&#xff0c;近期&#xff0c;很多企业的计算机服务器遭到了eking勒索病毒攻击&#xff0c;导致企业的计算机服务器所有数据被加密&#xff0c;无法正常使用&…

2024年度“阳江市惠民保”正式发布!阳江市专属补充医疗保险全新升级

11月14日&#xff0c;2024年度“阳江市惠民保”暨百场义诊活动发布会在阳江市华邑酒店顺利举行。2024年度“阳江市惠民保”一年保费最低只要59元&#xff0c;最高可获得400万元的医疗保障。 阳江市人民政府、阳江市医疗保障局、阳江市农业农村局、阳江市金融工作局、国家金融监…

使用flutter的Scaffold脚手架开发一个最简单的带tabbar的app模板

flutter自带的scaffold脚手架可以说还是挺好用的&#xff0c;集成了appBar&#xff0c;还有左侧抽屉&#xff0c;还有底部tabbar&#xff0c;可以说拿来就可以用了啊&#xff0c;所以我今天也体验了一下&#xff0c;做了一个最简单的demo&#xff0c;就当是学习记录了。 效果展…

干货分享---- 金融贷款电销获客的方法、渠道

电话营销的现状是&#xff0c;它过去使用电话资源在常规交易平台上正常工作&#xff0c;但进入时&#xff0c;对方总是挂断电话&#xff0c;甚至被他人标记为骚扰&#xff0c;这使工作变得困难。事实上&#xff0c;电话营销交易量飙升的关键很简单&#xff0c;那就是营销技巧和…