Django 学习笔记(五)模板标签
关于Django模板标签官方网址https://docs.djangoproject.com/en/1.11/ref/templates/builtins/
1.IF标签
Hello World/views.py
1 from django.shortcuts import render 2 3 class Person(object): 4 def __init__(self,name,age,sex): 5 self.name=name 6 self.age=age 7 self.sex=sex 8 9 def say(self): 10 return "I'm %s." %self.name 11 12 def index(request): 13 #传入普通变量 14 #传入数据为 html 中的变量:views中的变量 15 #return render(request,'index.html',{'title':'Welcome','name':'KeinLee'}) 16 17 #传入字典变量 18 person = {'name':'Lee','age':20,'sex':'male'} 19 #传入列表变量 20 book_list =['Python','Java','C'] 21 #book_list =[] 22 #传入对象变量 23 #person=Person('Lucky',18,'female') 24 return render(request,'index.html',{'title':'Welcome','person':person,'book_list':book_list})
(1)if ...elif...else...endif
Hello World/temlplates/index.html
{% if book_list.0 == 'Java' %}
第一本书是Java
{% elif book_list.0 == 'Python' %}
第一本书是Python
{% else %}
第一本书是C
{% endif %}
结果为:第一本书是Python
(2)if...and...or...not...endif
注意:and和or可以同用,但是and的优先级比or高
Hello World/temlplates/index.html
{% if book_list or person %} 存在book_list 或者 person {% endif %} {% if book_list and person %} book_list 和 person都存在 {% endif %} {% if book_list and not person %} 存在book_list 不存在person {% endif %}
结果为:存在book_list 或者 person、book_list 和 person都存在、(空)
(3)if符号运算(==、!=、>、>=、<=、<、in、not in、is、is not)
if is XX True这个是当且仅当XX为真,这个暂时理解不了
{% if book_list.0 == 'Python' %} 1.第一本书是Python {% endif %} {% if book_list.0 != 'Python' %} 2.第一本书不是Python {% endif %} {% if person.age <= 20 %} 3.这个人的年龄没超过20 {% else %} 4.这个人的年龄超过20 {% endif %} {% if 'Python' in book_list %} 5.Python在book_list列表里 {% endif %} {% if 'Py' not in book_list %} 6.Py在book_list列表里 {% endif %} {% if book_list.4 is not True %} 7.book_list.4不存在 {% endif %} {% if book_list is not None%} 8.book_list列表存在 {% endif %}
结果:1、 3、 5、 6、7、8能够显示
2.For标签
(1)列表for循环
{% for book in book_list %} {{book}} {% endfor %}
结果:Python Java C
(2)字典for循环
{% for k,v in person.items %} {{k}}:{{v}} {% endfor %}
结果:sex:male name:Lee age:20
(3)for...empty (在views.py中没有定义book_list2)
{% for book in book_list2 %} {{book}} {% empty %} 没有这个列表或者该列表为空 {% endfor %}
结果:没有这个列表或者该列表为空
(4)forloop
forloop.counter 循环记数,默认1开始
forloop.counter0 循环记数,从0开始
forloop.revcounter 循环到记数,默认1结束
forloop.revcounter0 循环记数,到0结束
forloop.first 第一次循环bool值为True,一般与if连用
forloop.last 最后一次循环bool值为True,一般与if连用
forloop.parentloop 循环嵌套中对上一层循环的操作
{% for k in person %} {%if forloop.first %} 这是第一次循环 {% elif forloop.last%} 这是最后一次循环 {% else %} {{k}} {% endif %} {% endfor %}
结果:这是第一次循环 name 这是最后一次循环
系列上一章:Django 学习笔记(四)模板变量
系列下一章:Django 学习笔记(六)MySQL配置