首页 > 其他分享 >模板语法之标签

模板语法之标签

时间:2022-09-07 11:46:15浏览次数:65  
标签:forloop 自定义 标签 tag html 语法 循环 模板

语法

{% 开始标签 %}
....
{% 结束标签%}

if标签

例:{% if ... %}
{% elif %}
{% else %}
{% endif %}
if语句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判断。

for标签

# for 标签带有一个可选的{% empty %} 从句,以便在给出的组是空的或者没有被找到时,可以有所操作。
{% for person in person_list %}
{{ person.name }}
{% empty %}
sorry,no person here
{% endfor %}
注:循环序号可以通过{{forloop}}显示
​forloop.counter            当前循环的索引值(从1开始)
forloop.counter0          当前循环的索引值(从0开始)
forloop.revcounter       当前循环的倒序索引值(从1开始)
forloop.revcounter0    当前循环的倒序索引值(从0开始)
forloop.first              当前循环是不是第一次循环(布尔值)
forloop.last              当前循环是不是最后一次循环(布尔值)
forloop.parentloop         本层循环的外层循环

with标签

# with起别名
{% with d.hobby.3.info as nb  %}
<p>{{ nb }}</p>
    在with语法内就可以通过as后面的别名快速的使用到前面非常复杂获取数据的方式
{% endwith %}

自定义过滤器、标签、inclusion_tag

先三步走
  1.在应用下创建一个名字”必须“叫templatetags文件夹
  2.在该文件夹内创建“任意”名称的py文件 eg:mytag.py
  3.在该py文件内"必须"先书写下面两句话(单词一个都不能错)
    from django import template
    register = template.Library()
4.然后在再其中输入需要自定义的东西,如下:
"""
# 自定义过滤器
@register.filter(name='baby')
def my_sum(v1, v2):
return v1 + v2
# 使用
{% load mytag %} #模板层加载mytag文件
<p>{{ n|baby:666 }}</p>

# 自定义标签(参数可以有多个)      类似于自定义函数
@register.simple_tag(name='plus')
def index(a,b,c,d):
return '%s-%s-%s-%s'%(a,b,c,d)
# 使用
标签多个参数彼此之间空格隔开
<p>{% plus 'jason' 123 123 123 %}</p>

# 自定义inclusion_tag
"""
内部原理
  先定义一个方法 
  在页面上调用该方法 并且可以传值
  该方法会生成一些数据然后传递给一个html页面
  之后将渲染好的结果放到调用的位置
"""
@register.inclusion_tag('left_menu.html')
def left(n):
    data = ['第{}项'.format(i) for i in range(n)]
# 第一种
# return {'data':data}  # 将data传递给left_menu.html
# 第二种
return locals()  # 将data传递给left_menu.html
{% left 5 %}
# 总结:当html页面某一个地方的页面需要传参数才能够动态的渲染出来,并且在多个页面上都需要使用到该局部 那么就考虑将该局部页面做成inclusion_tag形式
(在讲bbs的时候会使用到)

标签:forloop,自定义,标签,tag,html,语法,循环,模板
From: https://www.cnblogs.com/suncolor/p/16664831.html

相关文章

  • 模板语法之过滤器
    过滤器的作用用来修改变量的输出结果语法{{变量名|过滤器1:'参数值1’|过滤器2:'参数值2}}<h1>过滤器</h1><p>统计长度:{{s|length}}</p><p>默认值(第一个参数b布尔......
  • 模板语法之传值取值
    模板语法之传值变量相关使用:{{}}逻辑语法相关:{%%}后端传值部分:defindex(request):#模版语法可以传递的后端python数据类型n=123f=11.11s......
  • Lambda表达式基础语法 ( 一 )
    前言:Lambda作为匿名函数,与普通函数无异,所以与普通函数结构类似:(返回值类型+方法名+参数列表+方法体)因为是匿名函数,所以可以进一步忽略,返回值类型、方法名。  ......
  • Express 模板引擎
    Express模板引擎PhotobyRKTKNon不飞溅乙xpress有很多模板引擎可供选择。模板引擎是一种创建可重用代码的方法,同时允许将动态信息传递到代码中。它通常是一种简......
  • HTML/HTML5常用标签和属性
    HTML/HTML5常用标签和属性四、标题标签TIPh系列标签表示“标题”含义,h是headline的意思1、h1~h6标签标签语义h1一级标题h2二级标题h3三级......
  • HTML核心标签和属性
    1、文档声明、文档结构、功能标签注:HTML/HTML5骨架相关基础标签文档声明 <!DOCTYPE>用于告诉浏览器此文档的类型是什么处于<html>标签之前。用于告诉浏览器此文......
  • docker-compose 模板文件
    docker-compose模板文件模板文件是使用Compose的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟dockerrun相关参数的含义都是类似的。默认的......
  • Java基本语法
    Java代码的基本格式与注解1.代码的基本格式修饰符class类名{程序代码} 在编写代码时要注意以下几点(1)Java程序代码分为结构定义语句和功能执行语句,结构定......
  • #Markdown语法
    Markdown语法代码块://代码块语法:2.标题//标题语法#一级标题##二级标题######六级标题3.字体**加粗**==高亮==~~删除线~~*斜体*加粗高亮删除线斜体4.......
  • C#注释语法
    预定义的标签            用处<c>                             将说明中的文本标记为代码<code>           ......