Django模板语法

模板传递参数

变量需要通过视图函数渲染,视图函数在使用 render 或者 render_to_string 的时候可以传递一个 context 的参数,这个参数是一个字典类型。以后在模板中的变量就从这个字典中读取值的
front/views.py

from django.shortcuts import render

class Person(object):
	def __init__(self, username):
		self.username = username

def index(request):
	p = Person("name")
	context = {
		"person": p
	}
	
	return render(request, "index.html", context=context)
# 在index.html模板文件中可以通过{{ person.username }}获取对象的username属性值
注意:不能通过中括号的形式访问字典和列表中的值,比如dict[‘key’]和list[1]是不支持的!

模板中的变量同样也支持 点(.) 的形式。在出现了点的情况,比如person.username ,模板是按照以下方式进行解析的:

  1. 如果 person 是一个字典,那么就会查找这个字典的 username 这个 key 对应的值。
  2. 如果 person 是一个对象,那么就会查找这个对象的 username 属性,或者是 username 这个方法。
  3. 如果出现的是 person.0 ,会判断 persons 是否是一个列表或者元组或者任意的可以通过下标访问的对象,如果是的话就取这个列表的第1个值。如果不是就获取到的是一个空的字符串。

在for循环中,有一些自带的变量可供使用:

  • forloop.counter:当前循环的下标,以1作为起始。如果在后面加个0,就以0作为起始
  • forloop.revcounter:循环的反向下标,以1作为最后一个下标值。后面加0,以0作为最后一个下标
  • fouloop.first:是否是第一次遍历
  • forloop.last:是否是最后一次遍历
for…in…标签
{% for hero in heros reversed %}				# 后面加reversed表示反向遍历
    <li>{{ i }}</li>
{% endfor %}

遍历字典的时候,可以使用keys, values, items方法输出字典的键值等

{% for key, value in user.items %}
    <li>{{ key }}: {{ value }}</li>
{% endfor %}
for…in…empty,如果遍历的对象没有可迭代的元素的话,就会执行empty中的内容,意思就是遍历对象必须为空
{% for comment in comments %}
	{{ comment }}
{% empty %}
	没有任何评论
{% endfor %}
with标签的使用,可以把一个复杂的变量缓存到一个临时变量上
  • 在with语句中定义的变量,只能在{%with%}{%endwith%}中使用,不能在外面使用
  • 定义变量的时候,不能再等号两边留有空格,比如{%with name = person.1 %}是错误的
{% with name=person.1 %}
	{{ name }}
{% endwith %}

下面这种写法也是正确的

{% with person.1 as name %}
	{{ name }}
{% endwith %}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值