Python相关点Jinja

django框架-7模板-循环、判断、常用标签、过滤器等

2016-10-01  本文已影响485人  幽谷听泉

本节内容:

  1. 列表,字典,类的实例的使⽤
  2. 循环:迭代显示列表,字典等中的内容
  3. 条件判断:判断是否显示该内容,⽐如判断是⼿机访问,还是电脑访问,给出不⼀样的代码。
  4. 标签:for,if 这样的功能都是标签。
  5. 过滤器:管道符号后⾯的功能,⽐如{{ var|length }},求变量⻓度的 length 就是⼀个过滤器。
实例一、显示一个基本的字符串到页面

代码如下:

 #views.py
 def test(request):
    string = 'Hello World !'
    return render(request,'learn/test.html',{'string':string})

<!-- test.html -->
{{ string }}

页面:

Paste_Image.png
实例2 for循环和list内容的展示

代码如下:

 #views.py
 def test(request):
    List = ['caideyang','CCC','AAA','BBB']
    return render(request,'learn/test.html',{'List':List})

<!-- test.html -->
{% for i in List %}
{{ i }}<br>
{% endfor %}

简单总结⼀下:⼀般的变量之类的⽤ {{ }}(变量);功能类的,⽐如循环,条件判断是⽤ {% %}(标签)

实例三,显示字典中内容:
#views.py
def test(request):
    Dict = {'name':'caideyang','age':29}
    return render(request,'learn/test.html',{'Dict':Dict})

<!-- test.html -->
姓名:{{Dict.name}}<br>
年龄:{{Dict.age}}
Paste_Image.png

test.html还可以如下:
{% for key,value in Dict.items %}
{{ key }}:{{ value }}

{% endfor %}

实例四,在模板进⾏ 条件判断和 for 循环的详细操作:
#views.py
def test(request):
    List = map(str,range(100))
    return render(request,'learn/test.html',{'List':List})

假如我们想⽤逗号将这些元素连接起来:

<!-- test.html -->
{% for i in List %}
{{ i }},
{% endfor %}

效果如下:


Paste_Image.png

会发现最后一个元素后面也有逗号,用forloop.last 这个布尔型变量,如果是最后一项,其为真,否则为假

test.html可改成:
 {% for i in List %}
    {{ i }}{% if not forloop.last %},{% endif %}
 {% endfor %}

展示结果如下


Paste_Image.png
在for循环中还有很多有用的东西
变量 描述
forloop.counter 索引从 1 开始算
forloop.counter0 索引从 0 开始算
forloop.revcounter 索引从最⼤⻓度到 1
forloop.revcounter0 索引从最⼤⻓度到 0
forloop.first 当遍历的元素为第⼀项时为真
forloop.last 当遍历的元素为最后⼀项时为真
forloop.parentloop 在嵌套的 for 循环中,获取上层 for 循环的 forloop
{% for i in List %}
    {{ i }}{% if not forloop.last %},{% endif%}
    {% empty %}<li>抱歉为空</li>
{% endfor %}
实例五,模板上得到视图对应的⽹址:{% url "view-name" arg1 arg2 %}
#views.py
def add2(request,a,b):
    c = int(a) + int(b)
    return HttpResponse('%s + %s = %s' %(a,b,c))

#urls.py
url(r'^add/(\d+)/(\d+)$',views.add2 ,name='add4'),

<!-- test.html -->
{% url 'add4' 4 5 %}

还可以使⽤ as 语句将内容取别名(相当于定义⼀个变量),多次使
⽤(但视图名称到⽹址转换只进⾏了⼀次)
{% url 'some-url-name' arg arg2 as the_url %}
<a href="{{ the_url }}">链接到:{{ the_url }}</a>

实例六,模板中的逻辑操作:==, !=, >=, <=, >, < 这些⽐较都可以在模板中使⽤
{% if score >= 90 %}Good
{% elif score > 60 %}Common
{% else %}Bad
{% endif %} 
{% if 'ziqiangxuetang' in List %}
  ‘caideyang’ 在List列表里
{% else %}
  ‘caideyang’ 不在List列表里
{% endif %}
上一篇 下一篇

猜你喜欢

热点阅读