成都网站建设设计

将想法与焦点和您一起共享

模板语法之标签

语法

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

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

{{ nb }}

在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文件

{{ n|baby:666 }}

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

{% plus 'jason' 123 123 123 %}

# 自定义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的时候会使用到)

文章题目:模板语法之标签
文章路径:http://chengdu.cdxwcx.cn/article/dsogeso.html