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'%}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【开源】基于Vue和SpringBoot的快乐贩卖馆管理系统

项目编号&#xff1a; S 064 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S064&#xff0c;文末获取源码。} 项目编号&#xff1a;S064&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 搞笑视频模块2.3 视…

Linux常用的磁盘使用情况命令汇总

1、查看分区使用百分比 df -h 2、查看指定目录磁盘使用情况 du -hac --max-depth1 /opt 参数&#xff1a;-a 查看所有文件&#xff0c;-c 汇总统计&#xff0c;max-depth1 查看深度为1&#xff0c;2级目录不再统计。 3、常用统计命令汇总

一键帮您解决win11最新版画图工具难用问题!

&#x1f984;个人主页:修修修也 ⚙️操作环境:Windows 11 正文 自从win11更新后,新版的画图工具变得非常难用,如: 使用橡皮擦后露出背版马赛克 框住某部分拖动移动时背景露出马赛克剪贴板上图片信息无法直接插入到画图板 目前没有一个好一些的能够在软件内部解决这些问题的方…

参考意义大。4+巨噬细胞相关生信思路,简单易复现。

今天给同学们分享一篇生信文章“Angiogenesis regulators S100A4, SPARC and SPP1 correlate with macrophage infiltration and are prognostic biomarkers in colon and rectal cancers”&#xff0c;这篇文章发表在Front Oncol期刊上&#xff0c;影响因子为4.7。 结果解读&a…

软件测试个人求职简历该怎么写,模板在这里

1、个人资料 姓 名&#xff1a;xxx 性 别&#xff1a;x 手机号码&#xff1a;138888888xx 邮 箱&#xff1a; xxx 学 历&#xff1a;本科 专 业&#xff1a;电子商务 英 语&#xff1a;四级 当前工作&#xff1a;测试工程师 从业时间&#xff1a;4年 期望薪资&#xff1a;…

HDFS入门--学习笔记

1&#xff0c;大数据介绍 定义 数据指的是&#xff1a;一种可以被鉴别的、对客观事件进行记录的符号&#xff0c;除了可以是最简单的 数字外&#xff0c;也可以是各类符号、文字、图像、声音等。 通俗地说&#xff0c;数据就是对人类的行为及发生事件的一种记录。 存在的价值…

使用群晖虚拟机快速搭建黑群晖并在公网移动端环境下使用软件

文章目录 前言本教程解决的问题是&#xff1a;按照本教程方法操作后&#xff0c;达到的效果是前排提醒&#xff1a; 1. 搭建群晖虚拟机1.1 下载黑群晖文件vmvare虚拟机安装包1.2 安装VMware虚拟机&#xff1a;1.3 解压黑群晖虚拟机文件1.4 虚拟机初始化1.5 没有搜索到黑群晖的解…

Mysql中的索引与事务和B树的知识补充

索引与事务和B树的知识补充 一.索引1.概念2.作用3.使用场景4.使用 二.事务1.为什么使用事务2.事务的概念3.使用3.1脏读问题3.2不可重复读3.3 幻读问题3.4解决3.5 使用代码 三.B树的知识补充1.B树2.B树 一.索引 1.概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记…

QGIS之二十栅格数据定义投影

效果 步骤 1、准备数据 2、定义投影 Qgis工具箱中搜索“投影” 指定投影坐标系&#xff0c;例如EPSG&#xff1a;4549 运行 3、结果 查看属性

【Qt-23】基于QCharts绘制曲线图

一、QChart简介 QChart是Qt中专门用于绘制图表的模块&#xff0c;支持折线图、柱状图、饼图等常见类型。其主要组成部分有&#xff1a; QChart&#xff1a;整个图表的容器&#xff0c;管理图表中的所有数据和图形属性QChartView&#xff1a;继承自QGraphicsView&#xff0c;用于…

day2324_jdbc

今日内容 零、 复习昨日 一、作业 二、SQL注入 三、PreparedStatement 四、事务 五、DBUtil 零、 复习昨日 一、引言 1.1 如何操作数据库 使用客户端工具访问数据库&#xff0c;需要手工建立连接&#xff0c;输入用户名和密码登录&#xff0c;编写 SQL 语句&#xff0c;点击执行…

基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制(11.15)

1.任务所需实现基本功能 关机状态时白灯亮蓝灯灭&#xff0c;此时长按按键无反应&#xff0c;白灯亮度降低的状态&#xff0c;蓝灯保持灭的状态。点按按键一次&#xff0c;白灯熄灭&#xff0c;蓝灯亮此时W引脚控制的灯亮。继续点按按键。蓝灯亮&#xff0c;此时W引脚控制的灯…

9.3 【MySQL】系统表空间

了解完了独立表空间的基本结构&#xff0c;系统表空间的结构也就好理解多了&#xff0c;系统表空间的结构和独立表空间基本类似&#xff0c;只不过由于整个MySQL进程只有一个系统表空间&#xff0c;在系统表空间中会额外记录一些有关整个系统信息的页面&#xff0c;所以会比独立…

python之 flask 框架(2)项目拆分的 执行逻辑

项目的结构图 app.py # 导入__init__.py 比较特殊 from APP import create_appapp create_app() if __name__ __main__:app.run(debugTrue)init.py # __inti__.py # 初始化文件&#xff0c;创建Flask应用 from flask import Flask from .views import bluedef create_ap…

多媒体播放器Infuse mac中文版软件特点

Infuse mac是一款多媒体播放器应用&#xff0c;它支持播放多种格式的视频文件、音频文件和图片文件&#xff0c;并且可以通过AIrPlay将媒体内容投放到其他设备上。Infuse还支持在线视频流媒体播放和本地网络共享&#xff0c;用户可以通过它来访问家庭网络上的媒体文件。 Infuse…

【银行测试】支付功能、支付平台、支持渠道如何测试?

有朋友提问&#xff1a;作为一个支付平台&#xff0c;接入了快钱、易宝或直连银行等多家的渠道&#xff0c;内在的产品流程是自己的。业内有什么比较好的测试办法&#xff0c;来测试各渠道及其支持的银行通道呢&#xff1f; 作为产品&#xff0c;我自己办了十几张银行卡方便测…

Python数据容器(字典)

字典 1.字典的定义2.字典数据的获取3.字典的嵌套4.嵌套字典的内容获取5.字典的常用操作6.常用操作总结7.遍历字典8.练习 1.字典的定义 同样使用{}&#xff0c;不过存储的元素是一个一个的&#xff1a;键值对&#xff0c;语法如下 # 定义字典字面量 {key:value,key:value,...,…

2年博士后|心外医生赴美国耶鲁大学开展研究

G医生决定放弃申报CSC&#xff0c;改为自费出国&#xff0c;并在美国密歇根大学安娜堡分校和耶鲁大学两所名校中选择了更为出名的后者。因为不是CSC出资&#xff0c;G医生得以通过签证&#xff0c;顺利出国&#xff0c;实现了在世界知名高校从事2年博士后的个人职业规划目标。 …

IDEA安装配置SceneBuilder

1、下载 SceneBuilder 地址&#xff1a; Scene Builder - Gluon ​​​​​​​ Scene Builder | JavaFX中文官方网站 选择符合自己系统版本&#xff0c;JAVA版本的下载 2、安装SceneBuilder 执行下载的 SceneBuilder 安装程序&#xff0c;并按照安装向导的指示进行…

Oracle(17)Managing Roles

目录 一、基础知识 1、基础介绍 2、Predefined Roles 预定义的角色 3、各种角色的介绍 二、基础操作 1、创建角色 2、修改用户默认role 3、回收role 4、删除role 5、为角色授权 6、授予角色给用户 7、查看用户包含的角色&#xff1a; 8、查看角色所包含的权限 9、…