zoukankan      html  css  js  c++  java
  • django的模板语言

    Django Template Language 模板语言

     

    一、标签 tags

    1、普通变量

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

    2、逻辑判断

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

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

        VariableDescription
        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 %}
      • 作用:定义中间变量,作用域只在with中
    • set        
      • 语法:{% set name='gao' %}
            <h1>你好啊!大家好!</h1>
        {{ name }}
      • 作用:定义在全局变量,全局都能用
    • csrf_token

      • 语法:在页面的每个form表单中1写上{% 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

    三、参考链接

  • 相关阅读:
    天啦噜!原来Chrome自带的开发者工具能这么用你知道么!
    JavaScript易错知识点整理
    2016年开源巨献:来自百度的71款开源项目
    前端js面试中的常见的算法问题
    详解JS跨域问题
    console 输出信息
    js身份证校验
    阻止页面回退
    pc端js常用方法
    js实现QQ、微信、新浪微博分享功能
  • 原文地址:https://www.cnblogs.com/laogao123/p/10138811.html
Copyright © 2011-2022 走看看