请描述django模板中标签的作用?_html object标签

请描述django模板中标签的作用?_html object标签常用的模板标签if标签if标签相当于Python中的if语句,有elif和else相对应,但是所有的标签都需要用标签符号({%%})进行包裹。if标签中可以使用==、!=、<、<=、&

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

常用的模板标签

 

if标签

if标签相当于Python中的if语句,有elifelse相对应,但是所有的标签都需要用标签符号({%%})进行包裹。if标签中可以使用==!=<<=>>=innot inisis not等判断运算符。示例代码如下:

 {% if "张三" in persons %}
     <p>张三</p>
 {% else %}
     <p>李四</p>
 {% endif %}

 

for…in…标签

for...in...类似于Python中的for...in...。可以遍历列表、元组、字符串、字典等一切可以遍历的对象。示例代码如下:

 {% for person in persons %}
     <p>{{ person.name }}</p>
 {% endfor %}

如果想要反向遍历,那么在遍历的时候就加上一个reversed。示例代码如下:

 {% for person in persons reversed %}
     <p>{{ person.name }}</p>
 {% endfor %}

遍历字典的时候,需要使用itemskeysvalues等方法。在DTL中,执行一个方法不能使用圆括号的形式。遍历字典示例代码如下:

 {% for key,value in person.items %}
     <p>key:{{ key }}</p>
     <p>value:{{ value }}</p>
 {% endfor %}

在for循环中,DTL提供了一些变量可供使用。这些变量如下:

  • forloop.counter:当前循环的下标。以1作为起始值。
  • forloop.counter0:当前循环的下标。以0作为起始值。
  • forloop.revcounter:当前循环的反向下标值。比如列表有5个元素,那么第一次遍历这个属性是等于5,第二次是4,以此类推。并且是以1作为最后一个元素的下标。
  • forloop.revcounter0:类似于forloop.revcounter。不同的是最后一个元素的下标是从0开始。
  • forloop.first:是否是第一次遍历。
  • forloop.last:是否是最后一次遍历。
  • forloop.parentloop:如果有多个循环嵌套,那么这个属性代表的是上一级的for循环。

 

for…in…empty标签

这个标签使用跟for...in...是一样的,只不过是在遍历的对象如果没有元素的情况下,会执行empty中的内容。示例代码如下:

 {% for person in persons %}
     <li>{{ person }}</li>
 {% empty %}
     暂时还没有任何人
 {% endfor %}

 

with标签

在模版中定义变量。有时候一个变量访问的时候比较复杂,那么可以先把这个复杂的变量缓存到一个变量上,以后就可以直接使用这个变量就可以了。示例代码如下

 context = {
     "persons": ["张三","李四"]
 }

 {% with lisi=persons.1 %}
     <p>{{ lisi }}</p>
 {% endwith %}

有几点需要强烈的注意:

  • 在with语句中定义的变量,只能在{%with%}{%endwith%}中使用,不能在这个标签外面使用。
  • 定义变量的时候,不能在等号左右两边留有空格。比如{% with lisi = persons.1%}是错误的
  • 还有另外一种写法同样也是支持的:with … as ….
  {% with persons.1 as lisi %}
      <p>{{ lisi }}</p>
  {% endwith %}

 

url标签

在模版中,我们经常要写一些url,比如某个a标签中需要定义href属性。当然如果通过硬编码的方式直接将这个url写死在里面也是可以的。但是这样对于以后项目维护可能不是一件好事。因此建议使用这种反转的方式来实现,类似于django中的reverse一样。示例代码如下:

 <a href="{% url 'book:list' %}">图书列表页面</a>

如果url反转的时候需要传递参数,那么可以在后面传递。但是参数分位置参数关键字参数。位置参数和关键字参数不能同时使用。示例代码如下:

# path部分
path('detail/<book_id>/',views.book_detail,name='detail')

# url反转,使用位置参数
<a href="{% url 'book:detail' 1 %}">图书详情页面</a>

# url反转,使用关键字参数
<a href="{% url 'book:detail' book_id=1 %}">图书详情页面</a>

如果想要在使用url标签反转的时候要传递查询字符串的参数,那么必须要手动在在后面添加。示例代码如下:

<a href="{% url 'book:detail' book_id=1 %}?page=1">图书详情页面</a>

如果需要传递多个参数,那么通过空格的方式进行分隔。示例代码如下:

<a href="{% url 'book:detail' book_id=1 page=2 %}">图书详情页面</a>

 

autoescape标签

开启和关闭这个标签内元素的自动转义功能。自动转义是可以将一些特殊的字符。比如<转义成html语法能识别的字符,比如<会被转义成&lt;,而>会被自动转义成&gt;。模板中默认是已经开启了自动转义的。autoescape的示例代码如下:

 # 传递的上下文信息
 context = {
     "info":"<a href='www.baidu.com'>百度</a>"
 }

 # 模板中关闭自动转义
 {% autoescape off %}
     {{ info }}
 {% endautoescape %}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/165448.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 高斯光束的简单matlab仿真「建议收藏」

    高斯光束的简单matlab仿真「建议收藏」clcclearallcloseall%%假设在z=0处有一振幅为A的高斯光束N=100;lambda=1064e-6;%波长为1064nmk=2*pi/lambda;%波矢A=1;%振幅w=3;%高斯光束的束宽[x1,y1]=meshgrid(linspace(-10,10,N…

  • 主流前端-后端-数据库总结-后端框架篇

    主流前端-后端-数据库总结-后端框架篇一、传统框架介绍1)Hibernate是一种ORM框架,在Java对象与关系型数据库之间建立某种映射,以实现直接存取Java对象(POJO)。2)ORM框架是一种不同与MVC的另一种思想框架,适用范围也与MVC截然不同。3)需要创建一系列的持久化类,每个类的属性都可以简单的看做和一张数据库表的属性一一对应,当然也可以实现关系数据库的各种表件关联的对应。4)当我们需要相关操…

  • 超硬核!数据结构学霸笔记,考试面试吹牛就靠它

    超硬核!数据结构学霸笔记,考试面试吹牛就靠它上次发操作系统笔记,很快浏览上万,这次数据结构比上次硬核的多哦,同样的会发超硬核代码,关注吧。

  • android studio toast不显示_androidtoast封装

    android studio toast不显示_androidtoast封装AndroidToast用于在手机屏幕上向用户显示一条信息,一段时间后信息会自动消失。信息可以是简单的文本,也可以是复杂的图片及其他内容(显示一个view)。1.简单用法Toast.makeText(midlet.getApplicationContext(),”用户名不能为空”,Toast.LENGTH_LONG).show();2.自定义显示位置效果代码toast=Toast.mak…

  • 【python】urllib库之四大模块

    【python】urllib库之四大模块文章目录urllib库一urllib库四大模块1:urlopen()2:data参数3:timeout参数二:request.Request方法1:一般用法2:高级用法1:验证2:代理3:Cookies三:异常处理1:URLError2:HTTPError四:解析链接1:urlparse()2:urlunparse()3:urlsplit()4:urlunsplit()5:urljoin()6:…

  • setCapture和releaseCapture的小应用「建议收藏」

    setCapture和releaseCapture的小应用「建议收藏」       web开发和windows开发最大的区别就是windows开发是有状态的,而web开发是无状态的,在windows中,一切操作都可以由程序来控制,除非强制执行ctrl+alt+del;但web操作就不一样了,即使执行很重要的操作,用户一点击浏览器关闭按钮,就将前面操作成果化为乌有.尽管可以在onunload事件中加些代码,让用户可以选择是否退出,但不能从根本上解决问题!    

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号