一、标签 tags

1、普通变量

  • 普通变量用{{ }}
  • 变量名由数字、字母、下划线组成
  • 点.在模板语言中用来获取对象相应的属性值
  • 示例
{# 取variable中的第一个参数 #}
{{ variable.0 }}
{# 取字典dic中key的值 #}
{{ dic.key }}
{# 取obj_list对象列表中第一个对象的attr属性值 #}
{{ obj_list.0.attr }}
{# 点操作只能调用不带参数的方法 #}
{{ obj_list.0.method }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2、逻辑判断

  • 逻辑判断用{% %}
  • for

    • 语法:{% for item in item_list %}...{% empty %}...{% endfor %}
    • 作用:循环item_list,如果item值为空或不存在,则会执行empty中的代码,切记要写endfor结束循环
    • 常用for循环参数:

      Variable Description
      forloop.counter 当前循环的索引值(从1开始)
      forloop.counter0 当前循环的索引值(从0开始)
      forloop.revcounter 当前循环的倒序索引值(从1开始)
      forloop.revcounter0 当前循环的倒序索引值(从0开始)
      forloop.first 当前循环是不是第一次循环(布尔值)
      forloop.last 当前循环是不是最后一次循环(布尔值)
      forloop.parentloop 本层循环的外层循环
  • if

    • 语法:{% if some_condition %}...{% elif other_condition %}...{% endif %}
    • 作用:条件判断,切记要写endif结束条件判断
    • 常用与if语句结合的判断关键字 
      and 、or、==、>、<、!=、<=、>=、in、not in、is、is not
  • with

    • 语法:{% with new_variable = old_variable %}.....{% endwith %}
    • 作用:定义中间变量
  • csrf_token

    • 语法:在页面的每个form表单中写上{% csrf_token %}
    • 作用:用于跨站请求伪造保护
  • 注释

    • 语法:{# note #}

3、母版系统

  • 继承

    • 语法:{% extends 'base.html' %}
    • 作用:在子页面中在页面最上方使用下面的语法来继承母板
  • 块 block

    • 语法:{% block block_name %}...{% endblock %}
    • 作用:在子页面中通过定义母板中的block名来对应替换母板中相应的内容
  • 组件

    • 语法:{% include 'subassembly.html' %}
    • 作用:可以将常用的固定的HTML内容保存在单独的文件中,在需要的地方用以上语法导入使用

4、静态文件相关

  • 引用静态文件目录

    • 语法:{% load static %}
    • 作用:通过模板语言引用静态文件夹目录名称
    • 示例: 
      {% load static %}
      <img src="{% static 'images/sample.jpg' %}"></img>
      • 1
      • 2
  • 引用静态文件目录

    • 语法:{% get_static_prefix %}
    • 作用:通过模板语言引用静态文件夹目录名称
    • 示例: 
      {% load static %}
      <img src="{% get_static_prefix %}images/sample.jpg"></img>
      • 1
      • 2

5、自定义simpletag

  • 作用:可以自定义标签,注册后可使用
  • 自定义simpletag的步骤(与自定义Filter类似,不过接收更灵活的参数)

    • 在项目的app中创建名为templatetags的文件夹
    • 在templatetags的文件夹中创建自定义的py文件,例如:custom_simpletag.py
    • custom_simpletag.py中编写自定义simpletag,例如:

      from django import template
      register = template.Library() @register.simple_tag(name="my_simpletag")
      def add_simpletag(a,b,c): # 可接收多个参数
      return "{} + {} + {}".format(a, b, c)
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 使用自定义simple_tag前,首先在HTML页面中导入py文件 
      {% load custom_simpletag %}
      {% my_simpletag "1" "2" "3" %}
      • 1
      • 2

6、自定义inclusion_tag

  • 作用:返回html代码片段
  • 自定义inclusion_tag的步骤

    • 在项目的app中创建名为templatetags的文件夹
    • 在templatetags的文件夹中创建自定义的py文件,例如:custom_inclusiontag.py
    • custom_inclusiontag.py中编写自定义inclusiontag,例如:

      from django import template
      register = template.Library() @register.inclusion_tag('inclusion_tag.html')
      def my_inclusiontag(n):
      n = 1 if n < 1 else int(n)
      data = ["第{}项".format(i) for i in range(1, n+1)]
      return {"data": data}
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
    • 在templates文件夹中创建刚才注册的inclusion_tag.html文件

      <ul>
      {% for choice in data %}
      <li>{{ choice }}</li>
      {% endfor %}
      </ul>
      • 1
      • 2
      • 3
      • 4
      • 5
    • 使用自定义my_inclusiontag前,首先在HTML页面中导入py文件

      {% load custom_inclusiontag %}
      {% my_inclusiontag 10 %}
      • 1
      • 2

二、过滤器 Filter

1、内置过滤器

  • 语法:{{ value|filter_name:args }},注意:管道符前后没有空格

  • default

    • 语法:{{ value: default: "自定义内容"}}
    • 作用:如果value值没传的话就显示自定义内容
  • length

    • 语法:{{ value|length }}
    • 作用:返回value的长度
  • filesizeformat

    • 语法:{{ value|filesizeformat }}
    • 作用:将value格式化为一个 “人类可读的” 文件大小格式
  • slice

    • 语法:{{value|slice:"start:end"}}
    • 作用:切片
  • date

    • 语法:{{ value|date:"Y-m-d H: i:s"}}
    • 作用:将时间格式的value进行自定义格式化
  • safe

    • 语法:{{value|safe}}
    • 作用:取消Django对HTML标签和JS等语法标签进行自动转义,认为插入的HTML或JS是安全的不必转义
  • truncatechars

    • 语法:{{ value|truncatechars:num}}
    • 作用:如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“…”)结尾。num参数是指截断的字符数

2、自定义过滤器 Filter

  • 自定义过滤器的步骤

    • 在项目的app中创建名为templatetags的文件夹
    • 在templatetags的文件夹中创建自定义的py文件,例如:custom_filter.py
    • 在custom_filter.py中编写自定义过滤器,例如:

      from django import template
      register = template.Library() @register.filter(name="my_filter")
      def my_filter(value, arg): #最多接收两个参数
      return value.replace(arg, "")
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 使用自定义filter前,首先在HTML页面中导入py文件 
      {% load custom_filter %}
      {{ variable|my_filter:"0" }}
      • 1
      • 2

三、参考链接

Django Template Language 模板语言的更多相关文章

  1. The Django template language 阅读批注

    The Django template language About this document This document explains the language syntax of the D ...

  2. 第三百一十节,Django框架,模板语言

    第三百一十节,Django框架,模板语言 模板语言就是可以将动态数据在html模板渲染的语言 一.接收值渲染 locals()函数,写在请求响应render()函数里,可以将逻辑处理函数里的变量传到h ...

  3. Django框架 之 模板语言

    Django框架 之 模板语言 浏览目录 标签 过滤器 一.标签 Tags 1.普通变量 普通变量用{{ }} 变量名由数字.字母.下划线组成 点.在模板语言中用来获取对象相应的属性值 示例: 1 2 ...

  4. Django补充之模板语言

    路由系统 Django页面详情以及分页 举个例子: 有一组后台数据,需要展示到页面上,但由于数据量较大,那就需要做分页了吧,那么怎么才能将页面详情和分页都融合进去呢,Django里的路由系统加上正则表 ...

  5. 八 Django框架,模板语言

    模板语言就是可以将动态数据在html模板渲染的语言 一.接收值渲染 locals()函数,写在请求响应render()函数里,可以将逻辑处理函数里的变量传到html用模板语言渲染 {{...}}接收一 ...

  6. Django Template(模板系统)

    一.Django模板 内置模板标签和过滤器 二.常用操作 两种特殊符号: {{  }}  和 {%  %} 变量相关的用: {{  }} 逻辑相关的用: {%  %} 2.1 变量 在Django的模 ...

  7. Python学习笔记整理总结【Django】:模板语言、分页、Cookie、Session

    一.模板语言  1.在前段展示:对象/字典/元组 class Business(models.Model): # id #用默认的自增id列 即:Business中有3列数据(id, caption, ...

  8. [Python自学] day-18 (2) (MTV架构、Django框架、模板语言)

    一.实现一个简单的Web服务器 使用Python标准库提供的独立WSGI服务器来实现MVC架构. 首先,实现一个简单的Web服务器: from wsgiref.simple_server import ...

  9. Django Template(模板)

    一.模板组成 组成:HTML代码 + 逻辑控制代码 二.逻辑控制代码的组成 1.变量 语法格式 : {{ name }} # 使用双大括号来引用变量 1.Template和Context对象(不推荐使 ...

随机推荐

  1. HTML5之2D物理引擎 Box2D for javascript Games 系列 第一部分

    我要的是能在H5页面上跑的javascript版的Box2D啊!!! 最近想学习Javascript版本的Box2D JS物理引擎,无奈搜了半天也没找到相对比较系统的资料 官方网站也只是简单的介绍,A ...

  2. VC++的全局变量(转)

    全局变量一般这样定义:1.在一类的.cpp中定义 int myInt;然后再在要用到的地方的.cpp里extern int myInt:这样就可以用了. 2.在stdafx.cpp中加入:int my ...

  3. 《区块链100问》第85集:资产代币化之对标美元USDT

    USDT是Tether公司推出的对标美元(USD)的代币Tether USD.1USDT=1美元,用户可以随时使用USDT与USD进行1:1兑换.Tether公司执行1:1准备金保证制度,即每个USD ...

  4. c++ ACM常用函数

    1 保留小数点后两位 #include <iomanip> cout << setiosflags(ios::fixed) << setprecision(2)&l ...

  5. 关于UDP数据报引发“异步错误”的疑问

    在UNP卷一第三版的第8章8.9小节中说到:如果udp服务器没有启动,udp客户端在使用sendto发送一行文本后,将会等待一个永远也不会出现的应答从而阻塞在recvfrom调用上. 由于服务器段不存 ...

  6. [转]编译防火墙——C++的Pimpl惯用法解析

    impl(pointer to implementation, 指向实现的指针)是一种常用的,用来对“类的接口与实现”进行解耦的方法.这个技巧可以避免在头文件中暴露私有细节(见下图1),因此是促进AP ...

  7. 一步一步搭建oracle 11gR2 rac+dg之环境准备(二)【转】

    一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之环境准备 (二) 一步一步搭建oracle 11gR2 rac+dg之环境准备 ...

  8. 吾修叫板微软,QMVC说比MVC5快!

    前段时间发一篇文章,是关于QMVC介绍的文章,有网友建议写篇关于测试结果的文章.毕竟QMVC是开源的,并且是倾向于性能级开发的,因为我实在不喜欢MVC5还采用跟web form一样的开发风格,不停的封 ...

  9. HDU 5115 Dire Wolf (区间DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5115 题目大意:有一些狼,从左到右排列,每只狼有一个伤害A,还有一个伤害B.杀死一只狼的时候,会受到这 ...

  10. 最邻近规则分类KNN算法

    例子: 求未知电影属于什么类型: 算法介绍: 步骤:  为了判断未知实例的类别,以所有已知类别的实例作为参照      选择参数K      计算未知实例与所有已知实例的距离      选择最近K个已 ...