Django模板HTML中for循环遍历的是上下文context的key

Django中视图的返回值是将内容交给模板进行渲染的。

def booklist(request):
    booklist = BookInfo.objects.all()
    context = {"booklist":booklist}
    return render(request,'Qq/booklist.html',context)
context是一个字典类型的,render函数会将context的内容交给booklist.html。

booklist.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<ul>
    {% for foo in booklist %}
        <a href="/{{ foo.id }}/"><li>{{ foo.name }}</li></a>
    {% endfor %}


</ul>
</body>
</html>
在编写HTML的时候当写上{%for}之后,会出现提示,当你选择第二个的时候,就会默认生成for foo in booklist这样的格式

我在写context的时候选择key和value名字是一样的,是因为我看到很多教程都是这样写的,但其实如果你试着把context的key写成别的

def booklist(request):
    booklist = BookInfo.objects.all()
    context = {"bookbook":booklist}
    return render(request,'Qq/booklist.html',context)
再来看HTML,敲完{%for},选择提示默认生成是这样的

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<ul>
    {% for foo in bookbook %}
    
    {% endfor %}
    

    
</ul>
</body>
</html>
这就说明HTML中for循环遍历的真是上下文context中的key,但是为什么遍历之后的元素可以使用模型中的属性呢,应该是对象才可以使用,而context的value才是对象的集合。目前我的理解是,for循环遍历的是key,但是映射出的是value,我百度没发现类似的文章,也许这个问题很小,再或者大家约定俗成,把key和value写成一样的,就少了这个问题。等有时间再研究原理。

个人理解-----有错请告知。共勉!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值