• Django模板语言(DTL)基础


    ## 模板变量
      - 普通变量
        {{ name }}
      - 对象变量(使用点号访问对象属性和方法,方法不加括号)
        {{ person.name }}

    ## 常用模板标签

      # if标签,支持and,or,not和嵌套,不支持括号
        {% if %}{% endif %}
        {% if %}{% elif %}...{% else %}{% endif %}

      # for标签,用法与Python中基本相同
        {% for item in items %}{% endfor %}
        {% for item in items reversed %}{% endfor %} # 反向迭代
        {% for k, v in data.items %}{% endfor %}


        {% for item in items %}     #相当于:if items:
          语句一                     for item in items:
        {% empty %}                  语句一
          语句二               else:
        {% endfor %}                 语句二

        - 在for标签中自带forloop对象
          - forloop.counter 从1开始计数
            {% for item in items %}
              {{ forloop.counter }}: {{ item }}
          - forloop.counter0 从0开始计数
          - forloop.revcounter 逆向计数,最后一个数是1
          - forloop.revcounter0 逆向计数,最后一个数是0
          - forloop.first 布尔值,第一次循环时为True
          - forloop.last 布尔值,最后一次循环时为True
          - forloop.parentloop 引用父级循环的forloop对象

      # 相等判断(x, y可以是变量,字符串,整数,小数,变量不需要加{{}},字符串可以是单/双引号引起的硬编码,但列表、字典、布尔值不能硬编码,可以使用标签变量赋值,并且同样支持{% else %}标签)
        {% ifequal x y %}{% endifequal %}
        {% ifnotequal x y %}{% endifnotequal %}

      # 注释
        {# 单行注释 #}
        {% comment %}
          多行注释
        {% endcomment %}

    ## 过滤器(Python中关于字符串方法基本适用)
      {{ name|lower }} 全小写
      {{ name|upper }} 全大写
      {{ name|title }} 首字母大写
      {{ users_list|first }} 第一个元素
      {{ users_list|last }} 最后一个元素
      {{ sentence|truncatewords:"5" }} 字符串截断,以空格区分(所以中文无效),取前五个单词,多余的词用...省略,数字必须放在双引号内
      {{ sentence|slice:"4" }} 字符串切分,可以用于中文,多余的词没有任何标识
      {{ sentence|addslashes}} 在反斜线,单引号,双引号前面加一个斜线,可用于转义字符串
      {{ birthday|data:"F j, y" }} 格式化date或datatime对象,双引号内也可以是 DATE_FORMAT、DATETIME_FORMAT、SHORT_DATE_FORMAT 或 SHORT_DATE-TIME_FORMAT
      {{ word:length }} 返回长度

    ## 模板引用,引用其他模板的全部内容
      {% include url %} # url可以是双引号字符串硬编码,也可以是变量

    ## 模板继承
      - 父模板使用block标签表示可以被子模板修改的块
        {% block block_name %}{% endblock %}
      - 子模板在文件第一行使用extends标签继承父模板,并同样使用block标签修改父模板中的同名块
        {% extends url %}   # url可以是双引号字符串硬编码,也可以是变量
        {% block block_name %} 新的内容 {% endblock %}
      - 继承树中的任何模板都能访问上下文中的每一个模板变量

    ## 使用模板

    1 from django.shortcuts import render
    2 
    3 
    4 def home(request):
    5     return render(request, "index.html", {"name": "Stanley", "age":"22"})
    6      # 第一个参数必须是request,第二个参数是模板路径,第三个参数是模板变量
  • 相关阅读:
    PHP通过日志来发现问题
    php环境重启
    排行榜的实现
    git相关使用技巧和问题
    lua State加载部分库
    c++ 解析json
    查看某个进程允许打开的最大文件描述符
    glog安装与使用
    ubuntu update-alternatives
    gcc安装多个版本
  • 原文地址:https://www.cnblogs.com/hycstar/p/9315833.html
Copyright © 2020-2023  润新知