Django模板语言

变量

为了便于演示,以下是views.py的代码

def test(request):
    num = [1,2,3,4]
    dir = {'lemon':'luouo','banana':'haha','apple':'bubu'}
    hub = [(1,2),(3,4),(5,6)]

    class Commodity(object):
        def __init__(self,name,price):
            self.name=name
            self.price = price

        def feel(self):
            return '%s is too expensive' %self.name

    house = Commodity('house','One hundred million')
    car = Commodity('car','One hundred thousand')
    dream=[house,car]

    return render(request,'test.html',{'Num':num,'Dir':dir,'Dream':dream,'Hub':hub})

html中的用法

{{ Num }} #显示[1,2,3,4]
{{ Num.0 }} #取第一个值
{{ Dir.lemon }} #取字典中lemon的值
{{ Dream.0.name }} #取对象name的属性
{{ Dream.0.feel }} #取对象的feel方法的返回值 house is too expensive

标签

  • if标签
{% if Num.0 == 1 %}
<h1>等于一</h1>
{% endif %}

其中可以增加类似{% elif Num.1 == 2 %}或{% else %}的逻辑判断

  • for标签
#正向迭代
{% for foo in Num %}
<h1>{{ foo }}</h1>
{% endfor %}
#反向迭代
{% for foo in Num reversed %}
<h1>{{ foo }}</h1>
{% endfor %}
#二元组输出
{% for a,b in Hub %}
<h1>{{ a }}{{ b }}</h1>
{% endfor %}
#对字典解包
{% for a,b in Dir.items %}
<h1>{{ a }}----------{{ b }}</h1>
{% endfor %}
{% empty %} #在for循环中,定义列表位空输出的内容
{{ forloop.counter }} #for循环中的计数器,从1开始
{{ forloop.counter0 }} #for循环中的计数器,从0开始
{{ forloop.revcounter }} #for循环中的倒数计数器,从元素总个数开始直到1
{{ forloop.revcounter0 }}  #for循环中的倒数计数器,从元素总个数-1开始直到0
{{ forloop.first }} #一个布尔值,当第一次for循环的时候为True
{{ forloop.last }} #一个布尔值,最后一个for循环的时候为True