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写成一样的,就少了这个问题。等有时间再研究原理。
个人理解-----有错请告知。共勉!