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++B组 日期问题
标题:日期问题 小明正在整理一批历史文献.这些历史文献中出现了很多日期.小明知道这些日期都在1960年1月1日至2059年12月31日.令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的 ...
- 6_14 Abbott的复仇(UVa816)<图的最短路BFS>
1999次世界总决赛的比赛包括一个骰子迷宫问题.在这个问题被写的时候,法官们无法发现骰子迷宫概念的原始来源.不久之后的比赛,但是,罗伯特先生雅培,无数的迷宫和对作者的创造者主题,联系大赛评委,自称是骰 ...
- CentOS 7 下挂载NTFS盘及开机自动挂载
一.工具 NTFS-3G 二.安装2种安装方式 2.1.yum安装 yum install NTFS* 2.2.编译安装 下载 解压 wget https://tuxera.com/opensourc ...
- 树链剖分-Hello!链剖-[NOIP2015]运输计划-[填坑]
This article is made by Jason-Cow.Welcome to reprint.But please post the writer's address. http://ww ...
- 序列化--IOSerialize
序列化与反序列化 序列化:将对象转换为二进制 反序列化:将二进制转换为对象 作用:传输数据:状态保持(例如应用程序记忆上次关闭时的状态) 注:被序列化对象的类的所有成员也必须被标记为可序列化特性.该类 ...
- mount命令实际操作样例
本篇文章主要介绍了如何在Linux(CentOS 7)命令行模式安装VMware Tools,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. 本例中为在Linux(以CentOS 7为例)安装VM ...
- 专题一 Java基础语法
小辨析: println 输出字符后,下一个输出的字符会换行展示 print 输出字符后,下一个输出字符不会会换展示 system.out.println() 空格 分支结构:if-else使用说明 ...
- C:防止头文件重复包含
当一个项目比较大时,往往都是分文件,这时候有可能不小心把同一个头文件 include 多次,或者头文件嵌套包含. 方法一: #ifndef __SOMEFILE_H__ #define __SOMEF ...
- Java Interview Questions Summary
Spring 高并发 Java基础 多线程 正文. 多线程精选53题 1.什么是线程 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器 ...
- EF Expression 扩展
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; na ...