django 模版标签笔记
一、模板变量笔记:
1、在模版中使用变量,需要将变量放到‘{{}}’中。'{{ 变量 }}'
2、如果想访问对象的属性,可以通过'对象.属性名'的方式访问
3、如果想要访问一个字典的key对应的value,那么只能通过'字典.key'
4、因为在访问字典的'key'时候也用‘.’来访问,因此不能在字典中定义本身就有的属性名当做‘key’,否则字典的那个属性将为编程字典中的key了
5、如果想要访问列表或者元组,那么也是通过‘.’的方式访问,不用通过'[]'的方式访问。
二、前端模板中的for循环
1、'if'标签:if标签相当于‘python’中的if语句,有'elif'和'else'相对应,但是所有的标签都需要用标签符号('{%%}')进行包裹。if标签中可以使用'=='、!=、<、>、<=、>=、in、not in、is、is not'等判断运算符。等判断运算符。
2、'for ... in ...'标签:用法和python中的一样,可以遍历列表、元组、字符串、字典等一切可以遍历的对象。
如果想要反向遍历,那么在遍历的时候加上'reversed'。实例代码:
{% for student in students%}
<p>{{ student.name }} </p>
<p>{{ student.age }} </p
{% endfor %}
3、遍历字典:实例代码:
{% for key,value in students.items %}
<p>{{key}}:{{value}}</p>
{% endfor %}
4、在for循环中提供了一些参数:
<1> forloop.counter:当前循环的下标。以1作为起始值。
<2> forloop.counter0:当前循环的下标。以0作为起始值。
<3> forloop.revcounter:当前循环的反向下标值。比如列表有10个元素,那么第一次遍历这个属性是等于10,第二次是9,以此类推。并且是以1作为最后一个元素的下标。
<4> forloop.revcounter0:与forloop.revcounter类似,只不过最后一个元素的下标是0.
<5> forloop.first:是否为第一次遍历,适用于针对第一行设置不同时使用。
<6> forloop.last:是否为最后一次遍历,适用于针对最后一行设置不同时使用。
<7> forloop.parentloop:如果有多个循环嵌套,那么这个属性代表的是上一级的for循环。
5、for...in...empty:这个使用跟for...in...一样,其不同之处是,在遍历对象时,如果没有元素的情况下,会执行'empty'中的内容。示例代码:
{% for studet in students %}
<li>{{ student }}</li>
{% empty %}
暂时没有学生
{% endfor %}
三、前端模版中使用with标签
在模版中定义变量。有时候一个变量访问的时候比较复杂,那么可以先把这个复杂的变量缓存到一个变量上,以后直接使用这个变量就可以了。
context ={
'students': ['小明','小溪']
}
{% with list1=students.1 %}
<p>{{ list1 }}</p>
{% endwith %}
在使用with标签时需要注意:
1、在with语句中定义的变量,只能在{% with %}{% endwith %}中使用,不能在这个标签外使用。
2、定义变量的时候,不能在等号左右两边留空格。比如{% with list1 = students.1 %}是错误的。
3、还有另外一种写法同样也是支持的:
{% with students.1 as list1 %}
<p>{{ list1 }}</p>
{% endwith %}
四、url标签
在模版中,我们经常要写一些'url',当我们直接在页面里使用硬编码写死这个'url'时,后期维护起来成本是很高的。这时可以使用url标签。用法类似于django中的'reverse'。
<a href="{% url 'book:list' %}'">图书列表页</a>
如果需要传递参数到后端时怎么办?这时可以使用位置参数或者关键字参数。记住,两者不能同时使用,且在有多个参数时,使用空格进行分割,不要使用','。
# path部分
path('detail/<book_id>/<chapter_id>/', views.book_detail, name='detail') # 前端使用url反转,使用位置参数
<a href="{% url 'book:detail' 1 1 %}'">图书详情页</a> # 前端使用url反转,使用关键字参数
<a href="{% url 'book:detail' book_id=1 chapter_id=1 %}'">图书详情页</a>
五、spaceless标签:移除HTML标签中的空白字符,包括空格、tab键、换行等。示例代码如下:
{% spaceless %}
<p>
<a href='foo/' >Foo</a>
</p>
{% endspaceless %}
渲染后:
<p><a href='foo/' >Foo</a></p>
spaceless只会移除html标签之间的空白字符。而不会移除标签与文本之间的空白字符。例如:
<span>
不会压缩
</span>
这时是不会压缩span标签里的。
六、autoescape标签
开启或关闭这个标签内元素的自动转义功能。自动转义是可以将一些特殊字符转义成html语法能识别的字符。比如<会被转义成<,而>会被转义成>。模版中默认是开启了自动转义的。实例代码如下:
# 传递的上下文信息
context = {
"info": "<a href='www.baidu.com'>百度</a>"
}
# 模版中关闭自动转义
{% autoescape on %}
{{ info }}
{% endautoescape %}
这时在文中就会显示为百度的超链接。如果将on改为off,则会显示成一个普通字符串。
七、verbatim标签:默认会在前端模版中解析那些特殊字符,比如{%和%}以及{{等等。如果你在某个代码片段中不想使用模版解析引擎,只需将代码放在verbatim标签中即可。
{% verbatim %}
{{ if }}
{% endverbatim %}
django 模版标签笔记的更多相关文章
- django 模版-标签-视图-csrf-token-模版继承-HTML过滤器
""" ******模版****** --定义模版-- **变量** 视图传递给模版的数据 注意1:要遵守标识符规则 语法:{{var(即变量)}} 如果使用的变量不存在 ...
- Django模版语言的复用 1. include标签--模版导入 2.inclusion_tag自定义标签--模版导入 3.母版
include标签--模版导入 ''' 前提:项目中,往往会出现多个页面拥有一个或几个相同的页面版块,或是一个页面多个页面版块是相同的 如何运用:可以将多个样式标签的集合进行封装,对外提供版块的名字( ...
- Django商城项目笔记No.12用户部分-QQ登录2获取QQ用户openid
Django商城项目笔记No.12用户部分-QQ登录2获取QQ用户openid 上一步获取QQ登录网址之后,测试登录之后本该跳转到这个界面 但是报错了: 新建oauth_callback.html & ...
- Django商城项目笔记No.5用户部分-注册接口-短信验证码
Django商城项目笔记No.4用户部分-注册接口-短信验证码 短信验证码也保存在redis里(sms_code_15101234567) 在views中新增SMSCodeView类视图,并且写出步骤 ...
- django 模版 语法与使用
目录 django 模版语法与使用 django模板语言介绍 (摘自官方文档) 链接 什么是模板? 模板语句的 注释 变量 {{ 变量 }} 点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值 ...
- Django 模版语法与使用
目录 Django 模版语法与使用 django模板语言介绍 (摘自官方文档) 链接 什么是模板? 模板语句的 注释 变量 {{ 变量 }} 点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值 ...
- 【三】Django模版的使用
作为Web框架,Django提供了模板,可以很便利的动态生成HTML 模版系统致力于表达外观,而不是程序逻辑 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用 ...
- Django模版语言 格式化显示 后台datatime()时间
Django模版语言 格式化显示 后台datatime()时间 场景描述:
- django 自定义标签和过滤器
django 自定义标签和过滤器 Django支持自定义标签和过滤器.起初还不太重视它这项功能,但最近试了试自定义标签.发现django这个功能实在是太爽了. 首先在你项目的一个app中建立一个pyt ...
随机推荐
- c++中const变量定义与头文件包含的有关问题
在使用C++进行程序开发的时候,有个常识我们很熟悉,就是把类的定义写在.h文件中,把类的具体实现写在.cpp文件中.这毫无疑问是对的.但我们很少去思考为什么要这样做,本文结合自己的学习体会,对头文件及 ...
- at org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmplImpl.renderNoFlush(BackupMasterStatusTm
at org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmplImpl.renderNoFlush(BackupMasterStatusTm ...
- linux mv命令 cp命令
mv mv [options] source dest -f : 在mv操作要覆盖某已有的目标文件时不给任何指示 命令格式 运行结果 mv 文件名 文件名 将源文件名改为目标文件名 mv 文件名 目录 ...
- zxEditor
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="X-UA-C ...
- 并发之CountDownLatch用法详解
概念 CountDownLatch 是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行.例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后执行. Co ...
- Linux 设备驱动IO操作
每个外设都是通过读写其寄存器来控制的.外设寄存器也称为I/O端口,通常包括:控制寄存器.状态寄存器和数据寄存器三大类. 根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方 ...
- Kali部署DVWA和OWASPBWA
自己的备忘录,这里记录Kali部署DVWA和OWASPBWA,其中遇到的问题会在下一篇文章记录 DVWA(Damn Vulnerable Web App)是一个基于PHP/MySql搭建的Web应用程 ...
- Hadoop架构: 关于Recovery (Lease Recovery , Block Recovery, PipeLine Recovery)
该系列总览: Hadoop3.1.1架构体系——设计原理阐述与Client源码图文详解 : 总览 在HDFS中,有三种Recovery 1.Lease Recovery 2.Block Recover ...
- CRT中国剩余定理 & Lucas卢卡斯定理
数论_CRT(中国剩余定理)& Lucas (卢卡斯定理) 前言 又是一脸懵逼的一天. 正文 按照道理来说,我们应该先做一个介绍. 中国剩余定理 中国剩余定理,Chinese Remainde ...
- 6_7 树的层次遍历(UVa122)<二叉树的动态创建与BFS>
树状结构在计算机科学的许多领域中都相当重要.本问题牵涉到建立树及走访树.给你一二叉树,你的任务是写一个程序来打印依「阶层(level-order)」走访的结果.在本问题中,二叉树的每个节点含有一个正整 ...