Django Template Language 模板语言

1、标签 tags

一、普通变量

  • 普通变量用{{ }}
  • 变量名由数字、字母、下划线组成
  • 点.在模板语言中用来获取对象相应的属性值
  • 示例
{# 取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

二、逻辑判断

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

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

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

    • 语法:{% 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_tokenapp

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

    • 语法:{# note #}

三、母版系统

  • 继承oop

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

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

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

四、静态文件相关

  • 引用静态文件目录翻译

    • 语法:{% 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

五、自定义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

六、自定义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

2、过滤器 Filter

一、内置过滤器

  • 语法:{{ 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参数是指截断的字符数

二、自定义过滤器 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

3、参考连接

相关文章
相关标签/搜索