博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转:django模板标签{% for %}的使用(含forloop用法)
阅读量:4614 次
发布时间:2019-06-09

本文共 2892 字,大约阅读时间需要 9 分钟。

django模板标签{% for %}的使用(含forloop用法)

 {%  %}虽然这个是写在html中,但是这里边写的是服务端代码

django模板标签中,{% for %} 标签用于迭代序列中的各个元素。

与 Python 的 for 语句类似,语法是 for X in Y ,其中 Y 是要迭代的序列, X 是单次循环中使用的变量。每次迭代时,模板系统会渲染 {% for %}{% endfor %} 之间的内容。

1. 可以使用下述模板显示 athlete_list 变量中的运动员:

    {% for athlete in athlete_list %}
  • {
    { athlete.name }}
  • {% endfor %}

 

 

2. 加入 reversed 标签,反向迭代列表

{% for athlete in athlete_list reversed %}…{% endfor %}

 

3. 对二元组解包

{% for x, y in points %}    

There is a point at {

{ x }},{
{ y }}

{% endfor %}

4. 字典解包

{% for key, value in data.items %}    {
{ key }}: {
{ value }}{% endfor %}

5. 判断列表是否为空,为空就显示特定内容

第一种使用{% if %}标签

{% if athlete_list %}    {% for athlete in athlete_list %}        

{

{ athlete.name }}

{% endfor %}{% else %}

There are no athletes. Only computer programmers.

{% endif %}

 


第二种使用{% empty %}标签

{% for athlete in athlete_list %}    

{

{ athlete.name }}

{% empty %}

There are no athletes. Only computer programmers.

{% endfor %}

 

5. {% for %}标签内部模板变量forloop

{% for %}循环内部,可以访问一个名为forloop的模板变量。这个变量有若干属性,通过它们可以获知循环进程的一些信息。

5.1 forloop.counter

forloop.counter 的值是一个整数,表示循环的次数。这个属性的值从 1 开始,因此第一次循环时,forloop.counter 等于 1 。

{% for item in todo_list %}

{

{ forloop.counter }}: {
{ item }}

{% endfor %}

 

 

5.2 forloop.counter0

forloop.counter0forloop.counter 类似,不过是从零开始的。第一次循环时,其值为 0 。

5.3 forloop.revcounter

forloop.revcounter的值是一个整数,表示循环中剩余的元素数量。第一次循环时, forloop.revcounter 的值是序列中要遍历的元素总数。最后一次循环时, forloop.revcounter的值为 1 。

5.4 forloop.revcounter0

forloop.revcounter0forloop.revcounter类似,不过索引是基于零的。第一次循环时, forloop.revcounter0的值是序列中元素数量减去一。最后一次循环时, forloop.revcounter0 的值为 0 。

5.5 forloop.first

forloop.first 是个布尔值,第一次循环时为 True 。需要特殊处理第一个元素时很方便:

{% for object in objects %}    {% if forloop.first %}        
  • {% else %}
  • {% endif %} {
    { object }}
  • {% endfor %}

     

     

    5.6 forloop.last

    forloop.last是个布尔值,最后一次循环时为True 。经常用它在一组链接之间放置管道符号:

    {% for link in links %}    {
    { link }}{% if not forloop.last %} | {% endif %}{% endfor %}

     

    上述模板代码的输出可能是:

    Link1 | Link2 | Link3 | Link4

     

    此外,还经常用它在一组单词之间放置逗号:

    Favorite places:

    {% for p in places %} {
    { p }}{% if not forloop.last %}, {% endif %}{% endfor %}

     

    5.7 forloop.parentloop

    在嵌套的循环中, forloop.parentloop引用父级循环的 forloop 对象。下面举个例子:

    {% for country in countries %}    
    {% for city in country.city_list %}
    {% endfor %}
    Country #{
    { forloop.parentloop.counter }}
    City #{
    { forloop.counter }}
    {
    { city }}
    {% endfor %}

     

     

    小贴士

    forloop 变量只在循环内部可用。模板解析器遇到 {% endfor %} 时, forloop 随之消失。

    上下文和 forloop 变量
    {% for %} 块中,现有变量会让位,防止覆盖 forloop 变量。Django 把移动的上下文放到
    forloop.parentloop 中。通常,你无须担心,但是如果有名为 forloop 的模板变量(不建议这
    么做),在 {% for %} 块中会重命名为 forloop.parentloop

    转载于:https://www.cnblogs.com/yhleng/p/8582314.html

    你可能感兴趣的文章
    Code4App地址
    查看>>
    蓄水池抽样
    查看>>
    C#与数据库访问技术总结(十五)之 DataAdapter对象代码示例
    查看>>
    Sublime Text 插件推荐——for web developers
    查看>>
    Grails中service的线程安全的小例子
    查看>>
    MySQL与Oracle(二)---日期对比(MySQL)
    查看>>
    懵懂的第一周
    查看>>
    OpenFileDialog对话框Filter属性
    查看>>
    树链剖分
    查看>>
    poj2886线段树(单点修改,区间查询)
    查看>>
    通过JazzyViewPager来实现Fragment页面间的动画切效果
    查看>>
    golang map和for循环的查找效率对比
    查看>>
    struts2中服务器端数据校验
    查看>>
    form表单里的坑
    查看>>
    Vs2010+opencv2.3.1 imread出现异常
    查看>>
    Restful --- 让JSON回归单纯
    查看>>
    ★如何解释特修斯之船问题?
    查看>>
    循环移位
    查看>>
    第九章 LinkedBlockingQueue源码解析
    查看>>
    Android 自定义View - 启航 一般View定义
    查看>>