(10)模板层-模板语言的标签(字典、列表的循环和切片)

两种标签

{{ 变量名 }}   #这种方式是从后端的代码中取值的

{%   %}   #这种方式是用来做if判断和for循环的

新建的项目day02

页面中变量的使用和for循环的使用

views.py   #app01

from django.shortcuts import render,HttpResponse

# Create your views here.

def index(request):
# 将字典的值传入页面
dic = {'name':'peter','age':18}
li = [1,2,3]
li2 = [[1,2,3,],[4,5,6],[7,8,9]]
li3 = [['a','b','c'],['d','e','f']]
li4 = ['x']
# 在模板中使用视图中的变量,在括号里直接放入变量,格式为一个字典形式的,为了方便识别,k,v就是变量名
return render(request,'index.html',{'dic':dic,'li':li,'li2':li2,'li3':li3,'li4':li4})

index.heml

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>我是首页</h1>
{# 这里直接通过标签语言获得字典的值,在页面中显示 #}
{# 标签语言的字典取值是用. 后面跟key #}
<p>{{ dic }}</p>
<p>{{ dic.name }}</p>
<p>{{ dic.age }}</p>

{# 后端传过来的是一个字典了通过for循环来完成字典取值 #}
{# 字典取值有3中,values、keys、items、如果是items则会将k,v放在一个元祖中,取值方式按照元位置取值,直接 . 位置数即可 #}
{% for foo in dic.values %}
<p>{{ foo }}</p>
{% endfor %}

{# 后端传过来的是一个列表 #}
{# 列表切片取值 #}
<p>{{ li.2 }}</p>

{% for foo in li %}
{# 列表的循环取值 #}
<p>{{ foo }}</p>
{% endfor %}

{% for foo in li %}
{# 标签后可以在连接标签,而且可以直接设定标签的尺寸 #}
<p>{{ foo }} <img src="https://goss2.vcg.com/creative/vcg/800/version23/VCG41157648094.jpg" alt="当图片连接丢失的提示文字" height="90" width="160"></p>
{% endfor %}

{#通过for循环得到索引位置 #}
{% for foo in li %}
{#forloop只在for循环内部使用,是一个对象,counter就是用来取索引值的 #}
<p>这是第{{ forloop.counter }}个位置,值为{{ foo }}</p>
{% endfor %}

{#通过for循环从0开始索引第一种写法 #}
{% for foo in li %}
<p>这是第{{ forloop.counter | add:-1 }}个位置,值为{{ foo }}</p>
{% endfor %}

{#通过for循环从0开始索引的第二种写法 #}
{% for foo in li %}
<p>这是第{{ forloop.counter0 }}个位置,值为{{ foo }}</p>
{% endfor %}

{#通过for循环倒过来索引 #}
{% for foo in li %}
<p>这是第{{ forloop.revcounter }}个位置,值为{{ foo }}</p>
{% endfor %}

{#通过for循环倒过来索引最后一位为0 #}
{% for foo in li %}
<p>这是第{{ forloop.revcounter0 }}个位置,值为{{ foo }}</p>
{% endfor %}

{% for foo in li %}
<p>{{ forloop }}</p>
{% endfor %}

{# 嵌套列表的取值 #}
{% for foo in li2 %}
<p>这里传过来一个列表嵌套列表的变量</p>
{{ foo }}
<p>for循环嵌套for循环来取得列表嵌套列表内的值</p>
{% for fooo in foo %}
{{ fooo }}
{% endfor %}
{% endfor %}

{# parentloop外层对象的使用 #}
<p></p>
{% for foo in li3 %}
{% for i in foo %}
{#parentloop就是外层的对象,后面counter就是上层循环的第几次循环,这里循环和python的for循环嵌套原理同理 #}
{{ forloop.parentloop.counter }}
<p>{{ i }}</p>
{% endfor %}
{% endfor %}

<p></p>
{#使用forloop.counter获取循环的次数,可以模拟出浏览的几楼#}
{% for foo in li %}
<p>{{ forloop.counter }}</p>
{% endfor %}

<p></p>
{#empty的使用 #}
{% for foo in li4 %}
{#如果循环的对象是空的,则会打印empty,如果有值则会打印列表的值 #}
<p>{{ foo }}</p>
{% empty %}
我没有值
{% endfor %}

</body>
</html>

urls.py  #day02下的

from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'index/', views.index)
]
原文地址:https://www.cnblogs.com/shizhengquan/p/10504698.html