排序

1、forloop.counter 表示循环的次数,它从1开始计数,第一次循环设为1

  1. {% for item in todo_list %}
  2. <p>{{ forloop.counter }}: {{ item }}</p>
  3. {% endfor %}

2、forloop.counter0 表示循环的次数,它从0开始计数,第一次循环设为0

  1. {% for item in todo_list %}
  2. <p>{{ forloop.counter0 }}: {{ item }}</p>
  3. {% endfor %}

3、forloop.revcounter  示循环中剩下的items数量,第一次循环时设为items总数,最后一次设为1

  1. {% for item in todo_list %}
  2. <p>{{ forloop.revcounter }}: {{ item }}</p>
  3. {% endfor %}

4、forloop.revcounter0 类似于forloop.revcounter,但它是表示的数量少一个,即最后一次循环时设为0

  1. {% for item in todo_list %}
  2. <p>{{ forloop.revcounter0 }}: {{ item }}</p>
  3. {% endfor %}

5、forloop.first 当第一次循环时值为True,在特别情况下很有用)

  1. {% for object in objects %}
  2. {% if forloop.first %}<li class="first">{% else %}<li>{% endif %}
  3. {{ object }}
  4. </li>
  5. {% endfor %}

6、forloop.last 当最后一次循环时值为True

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

7、forloop.parentloop 在嵌套循环中表示父循环的forloop:

  1. {% for country in countries %}
  2. <table>
  3. {% for city in country.city_list %}
  4. <tr>
  5. <td>Country #{{ forloop.parentloop.counter }} </td>
  6. <td>City #{{ forloop.counter }}</td>
  7. <td>{{ city }}</td>
  8. </tr>
  9. {% endfor %}
  10. </table>
  11. {% endfor %}

继承 

1、模板继承允许你建立一个基本的”骨架”模板, 它包含你所有最常用的站点元素 并 定义了一些可以被子模板覆盖的block

父模板(master.html):

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>{% block title %}{% endblock %}</title>
  6. <style>
  7. .body-header{
  8. background-color: black;
  9. }
  10. </style>
  11. </head>
  12. <body>

HTML页面:

  1. {# 指定继承的模板 #}
  2. {% extends 'master.html' %}
  3.  
  4. {# 指定替换的位置 #}
  5. {% block title %}
  6. tp1
  7. {% endblock %}
  8.  
  9. {# 指定替换的位置 #}
  10. {% block content %}
  11. <p>tp1</p>
  12. {% endblock %}

注:一个html页面只能继承一个父模板,不能继承多个

2、模板导入定制的组件include

组件(tag.html):

  1. form>
  2. <input type="text" name="user"/>
  3. <input type="submit" value="提交"/>
  4. </form>

HTML页面:

  1. {# 指定继承的模板 #}
  2. {% extends 'master.html' %}
  3.  
  4. {# 指定替换的位置 #}
  5. {% block title %}
  6. tp1
  7. {% endblock %}
  8.  
  9. {# 指定替换的位置 #}
  10. {% block content %}
  11. <p>tp1</p>
  12.  
  13. {# 导入单独组件 #}
  14. {% include 'tag.html' %}
  15. {% endblock %}

  

Simplelistfilter

有时候我们需要在html上对后台渲染的页面进行二次处理,比如把字符串的首字母大写、字符进行计算操作等

1、django默认自带方法

  1. {{ item.event_start|date:"Y-m-d H:i:s"}} #日期格式进行转换
  2. {{ bio|truncatewords:"30" }} #取字符串前30位
  3. {{ my_list|first|upper }} #第一个字符大写
  4. {{ name|lower }} #所有字符小写

2、自定义simple_tag、filter

① 在app中创建templatetags文件夹

② templatetags中创建任意 .py 文件,如:handle.py

  1. from django import template
  2. from django.utils.safestring import mark_safe
  3.  
  4. register = template.Library()
  5.  
  6. @register.simple_tag()
  7. def sub(a1,a2):    #能添加多个参数
  8.  
  9. return a1 + a2
  10.  
  11. @register.filter()  
  12. def lzl(a1,a2):    #只能传入两个参数
  13.  
  14. return a1 + a2

③ 在settings中配置当前app,不然django无法找到自定义的simple_tag

  1. INSTALLED_APPS = (
  2. 'django.contrib.admin',
  3. 'django.contrib.auth',
  4. 'django.contrib.contenttypes',
  5. 'django.contrib.sessions',
  6. 'django.contrib.messages',
  7. 'django.contrib.staticfiles',
  8. 'cmdb',
  9. )

④ 导入和使用simple_tag、filter

  1. {# 导入py文件名 #}
  2. {% load handle %}
  3. <!DOCTYPE html>
  4. <html lang="en">
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>Title</title>
  8. </head>
  9. <body>
  10. <div>{{ name|lower }}</div>
  11. <div>{{ name|upper }}</div>
  12.  
  13. {% sub 1 2 %}
  14.  
  15. {{ 'hello'|lzl:'world'}}
  16. </body>
  17. </html>
  18.  
  19. {#页面内容#}
  20. {#3 helloworld#}

  

3、django数据库choice获取字段

  1. device_status_choices = (
  2. (1, '上架'),
  3. (2, '在线'),
  4. (3, '离线'),
  5. (4, '下架'),
  6. )
  7. device_type_id = models.IntegerField('设备类型',choices=device_type_choices, default=1)
  8.  
  9. <td colspan="4">{{ response.data.asset.get_device_status_id_display }}</td>

  

详细-》》http://www.cnblogs.com/mfryf/archive/2012/07/17/2595019.html

《第二十章》

Python开发【Django】:模板语言的更多相关文章

  1. django模板语言的注释

    就像HTML或者Python,Django模板语言同样提供代码注释. 注释使用 {# #} : ? 1 {# This is a comment #} 注释的内容不会在模板渲染时输出. 用这种语法的注 ...

  2. 6月15日 python学习总结 Django模板语言相关内容

    Django模板语言相关内容   Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...

  3. Python - Django - 模板语言之变量

    前言: 在 Django 模板语言中变量用 {{ }},逻辑用 {% %} 在 urls.py 中添加对应关系 from django.conf.urls import url from django ...

  4. Django模板语言初识

    一.Django框架简介 1.MVC框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...

  5. Django模板语言相关内容 Djan

    Django模板语言相关内容   Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...

  6. Django——模板语言相关内容

    Django模板语言相关内容   Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...

  7. Django 模板语言 路由 视图

    . 模板语言(字符串替换) . 母版和继承 . 什么时候用母版? html页面有重复的代码,把它们提取出来放到一个单独的html文件. (比如:导航条和左侧菜单) . 子页面如何使用母版? {% ex ...

  8. Django模板语言(常用语法规则)

    Django模板语言 The Django template language 模板中常用的语法规则 {最新版本的Django语法可能有改变,不支持的操作可能支持了.[HTML教程 - 基本元素/标签 ...

  9. django 模板语言之 filter 自定义模板

    可以自己写python函数放在模板语言里用 这种方法是django里面的 filter {{ item.event_start|date:"Y-m-d H:i:s"}} {{ bi ...

  10. Django模板语言与视图(view)

    常用语法 {{  }}和{% %} 变量相关的用{{}} , 逻辑相关的用{% %} 变量 在Django的模板语言中按此语法使用:{{ 变量名 }}. 当模版引擎遇到一个变量,它将计算这个变量,然后 ...

随机推荐

  1. oracle中LAG()和LEAD()以及over (PARTITION BY)

    LAG()和LEAD()统计函数可以在一次查询中取出同一字段的前N行的数据和后N行的值.这种操作可以使用对相同表的表连接来实现,不过使用LAG和 LEAD有更高的效率.以下整理的LAG()和LEAD( ...

  2. asp.net mvc forms身份认证

    web.config配置 <authentication mode="Forms"> <forms loginUrl="~/Login/Index&qu ...

  3. javascript在字符串中提取网址并替换成超链接

    var str = " http://wasmip.baidu.com.cn/mip/km/archives/km_archives_main/kmArchivesMain.do?metho ...

  4. sql替换数据库字段中的字符

    UPDATE `table_name` SET `field_name` = replace (`field_name`,'from_str','to_str') WHERE ……说明:table_n ...

  5. 合格前端系列第六弹-从指向看JavaScript

    https://my.oschina.net/qiangdada/blog/1484001

  6. [extjs] ExtJs4.2 Form 表单提交

    基本代码: <script> Ext.onReady(function(){ Ext.create('Ext.form.Panel', { title: '登录', bodyPadding ...

  7. c语言常用数据类型转换整理

    你要发送原始数据流 还是 格式化输出? 如果是格式化 按原子说的 ,用sprintf / printf; 如果发送原始内存数据流, 可按下面发送, 发送 #define BYTE0(pointer) ...

  8. zoj 1022 - Parallel Expectations

    题目:有两个指令序列,在执行时,能够执行随意指令序列的下一条指令.每条指令要一直执行到结束. 求两组指令执行结束后,每一个变量里面存储值的期望. 分析:dp,模拟.这道题算不上难题,只是算得上的麻烦题 ...

  9. Java集合----概述、Collection接口、Iterator接口

    Java 集合概述 Java 集合就像一种容器,可以把多个对象的引用放入容器中. Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组 Java 集合可分为 Set.Li ...

  10. POJ 1038 Bug Integrated Inc(状态压缩DP)

    Description Bugs Integrated, Inc. is a major manufacturer of advanced memory chips. They are launchi ...