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

    一、语法

    1、变量

    2、逻辑相关

    2.1、if判断

    {% if a > b %}
    {% endif %}
    
    {% if a > b %}
    {% else %}
    {% endif %}
    
    {% if a > b %}
    {% elif %}
    {% else %}
    {% endif %}

    2.2、for循环

    2.2.1、for循环基本用法

    {% for i in name_list %}
        {{ i }}
    {% endfor %}
    
    {% for i in name_list %}
        {{ i }}
    {% empty %}
        空空如也
    {% endfor %}

     2.2.2、for循环可用的属性

    forloop.counter
    forloop.counter0
    forloop.revcounter
    forloop.revcounter0
    
    forloop.first 
    forloop.last 
    
    forloop.parentloop  --> 两层for循环,内层循环引用外层循环

    二、filter

    1、内置的filter

    1. length
    2. filesizeformat       --> 格式化文件大小的
    3. date:'Y-m-d H:i:s'   --> 格式化时间的
    4. slice
    5. safe                 --> XSS攻击(跨站脚本攻击)
    6. truncatechars:20     --> 截取字符,超过的用...表示
    7. default

    2、自定义的filter

      具体的实现方式:
            1. 定义阶段
                1. 在app下面新建一个python的包:templatetags
                2. 在上面的Python包中新建一个Python文件,名字随意
                3. 在上述python文件中:
                    from django import template
                    
                    # 生成一个注册用的实例
                    register = template.Library()
                    # 定义并注册一个自定义的filter函数
                    @register.filter(name='addsb')
                    def add_sb(arg):
                        return "{} sb".format(arg)
            2. 调用阶段:
                1. 在Django的模板文件中,导入刚才新建的python文件
                    {% load py文件名 %}
                2. 按照filter的语法调用
                    {{ name|addsb }}

    三、母版与继承

    1、为什么要有模板和继承

      把多个页面公用的部分提取出来,放在一个 母版 里面。

      其他的页面只需要 继承 母版就可以了。

    2、具体使用的步骤

      1. 把公用的HTML部分提取出来,放到base.html文件中
      2. 在base.html中,通过定义block,把每个页面不同的部分区分出来
      3. 在具体的页面中,先继承母版
      4. 然后block名去指定替换母版中相应的位置

    3、用母版和继承的注意事项

      1. {% extends 'base.html' %} --> 母版文件:base.html要加引号
      2. {% extends 'base.html' %}必须放在子页面的第一行!!!
      3. 可以在base.html中定义很多block,通常我们会额外定义page-css和page-js两个块
      4. view.py相应的函数中返回的是对应的子页面文件 不是不是不是 base.html

    四、组件

    1. 什么时候用组件?
        重复的代码,包装成一个独立的小html文件。
    2. 如何使用?
        {% include 'nav.html' %}

    五、静态文件的灵活写法

      1.
          {% load static %}
          {% static 'jQuery-3.3.1.js' %}
      2. {% get_static_prefix %}jQuery-3.3.1.js

    1. 利用Django模板语言内置的static方法帮我拼接静态文件的路径
        {% load static %}
        <link href="{% static 'bootstrap/css/bootstrap.min.css' %}" rel="stylesheet">
    2. 利用内置的get_static_prefix获取静态文件路径的别名,我们自行拼接路径
        {% load static %}
        <link href="{% get_static_prefix %}bootstrap/css/bootstrap.min.css" rel=stylesheet>
    3. as语法(一个路径多次用到,可以使用as保存到一个变量,后面就直接使用变量代替具体路径)

    六、自定义simple_tag和

      比filter高级一点点
      它可以接受的参数个数大于2

    七、inclusion_tag

     用来返回一段html代码(示例:返回ul标签)

    1. 定义阶段
        在app下面新建templatetags 文件夹(注意是Python包)
        新建一个py文件
        
        from django import template
        # 生成注册示例,名字必须是register
        register = template.Library()
        @register.inclusion_tag("ul.html")
        def show_ul(num):
            num = 1 if num < 1 else int(num)
            data = ["第{:0>3}号技师".format(i) for i in range(1, num+1)]
            return {"data": data}

    2. 调用阶段
        {% load xx %}
        {% show_ul 10 %}

  • 相关阅读:
    蓝桥网试题 java 基础练习 特殊的数字
    蓝桥网试题 java 基础练习 杨辉三角形
    蓝桥网试题 java 基础练习 查找整数
    蓝桥网试题 java 基础练习 数列特征
    蓝桥网试题 java 基础练习 字母图形
    蓝桥网试题 java 基础练习 01字串
    蓝桥网试题 java 基础练习 回文数
    蓝桥网试题 java 基础练习 特殊回文数
    Using text search in Web page with Sikuli
    each of which 用法
  • 原文地址:https://www.cnblogs.com/bad-robot/p/9743338.html
Copyright © 2011-2022 走看看