• Django之模板层


    【1】模板之变量

            在Django模板中要想使用变量关键是使用点语法。

     

    获取值的语法是:{{ 变量名 }} 

     

    Python中所有的数据类型包括函数,类等都可以调用

    【2】模板之过滤器

    • 过滤器语法
      • {{ obj | filter_name:param }}
        • obj:变量名字,filter_name:过滤器名称,param:变量
    • default过滤器
      • 如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值
      • 语法:{{ value | default:'onthing' }}
    • length过滤器
      • 返回值的长度。对列表和字符串都起作用
      • 语法:{{ value | length }}
    • filesizeformat过滤器
      • 将值格式化为一个人类可读的文件尺寸(例如:13KB,4.1MB等)
      • 语法:{{ value | filesizeformt }}
    • date过滤器
      • 如果value=datetime.datetime.now(),返回当前的时间
      • 语法:{{ value | date:"Y-m-d" }}
    • slice过滤器
      • 切分,如果value=' helloworld '
      • 语法:{{ value | slice:"2:6"}}
    • truncatechars过滤器
      • 如果字符串多于指定的字符数量,那么会被截断。截断的字符串将以(.....)结尾
      • 参数:要截断的字符数
      • 语法:{{ value | truncatechars:6}}
    • safe过滤器
      • 取消对HTML标签和js等语法标进行自动转义
      • 语法:{{ value | safe }}

    在Django中有两种方法关闭HTML的自动转义:

            1、通过safe过滤器

            2、通过django内部的mark_safe方法:

            

    1. from django.utils.safestring import mark_safe
    2. def index(request):
    3. res = mark_safe('hello')
    4. return render(request,'index.html')
    5. '''然后在index.html中使用{{ res }}查看结果'''

    【3】模板之标签

            【3.1】for标签

            for标签:遍历每一个元素

            

            语法:

                    

    1. # 循环一个字典
    2. {% for user in user_dict %}
    3. {{ user }}

    4. {% endfor %}
    5. {% for key,value in user_dict.items %}
    6. {{ key }}:{{ value }}

    7. {% endfor %}
    8. {% for user in user_dict.items %}
    9. {{ user }}

    10. {% endfor %}
    11. {% for user in user_dict.keys %}
    12. {{ user }}

    13. {% endfor %}
    14. {% for user in user_dict.values %}
    15. {{ user }}

    16. {% endfor %}
    17. '''
    18. items:拿到字典key值和value值
    19. keys:只拿到字典的key值
    20. value:只拿到字典的value值
    21. '''
    22. {% for user in user_dict %}
    23. {{ forloop }}

    24. {% endfor %}
    25. '''
    26. 循环序号可以通过{{forloop}}显示
    27. 指定{{forloop}}后会打印出以下的值
    28. {'parentloop': {}, 'counter0': 0, 'counter': 1, 'revcounter': 3, 'revcounter0': 2, 'first': True, 'last': False}
    29. counter0:代表的是索引数
    30. counter:代表是的顺序
    31. first:代表的第一个
    32. last:代表的最后一个
    33. '''
            【3.2】for......empty标签

            for标签带有一个可选的{% empty %} 从句,以便在循环的对象为空或者没有找到时,可以有所操作

     

    语法:

            

    1. {% for person in person_list %}
    2. {{ person.name }}

    3. {% empty %}
    4. sorry,no person here

    5. {% endfor %}
    6. '''
    7. person_list为空或者找不到时会执行{% empty %}中的p标签的执行
    8. '''
            【3.3】if标签

            {% if %}会对一个变量求值,如果它的值是True(存在,不为空,且不是false),对应的内容块会输出。总而言之就是和python中的if语句使用方法类似

     

    语法:

            

    1. def index(request):
    2. num=89
    3. return render(request,'index.html')
    4. {% if num > 100 or num < 0 %}
    5. 无效

    6. {% elif num > 80 and num < 100 %}
    7. 优秀

    8. {% else %}
    9. 凑活吧

    10. {% endif %}

    if语句支持 and、or、==、>、<、!=、<=、>=、in、not in、is、is not判断

            【3.4】with标签

            使用一个简单的名字缓存一个复杂的变量,简而言之就是起别名

     

    语法:

            

    1. def index(request):
    2. d = {'username':'kevin','age':18,'info':'这个人有点意思','hobby':[111,222,333,{'info':'NB'}]}
    3. return render(request,'index.html')
    4. # with起别名
    5. {% with d.hobby.3.info as nb %}
    6. {{ nb }}

    7. with语法内就可以通过as后面的别名快速的使用到前面非常复杂获取数据的方式
    8. {{ d.hobby.3.info }}

    9. {% endwith %}

    【4】模板之导入

    • 模板导入就是将一个html文件导入到另一个html文件之中
    • 语法
      • {% include ' 模板名称 ' %}
      •  在导入文件中写导入

    【5】模板之继承

    模板继承可以让您继承另一个模板的所有元素,还可以定义能够被字模板覆盖的block

    • 继承的语法:
      • {% extends '被继承的模板' %}

    block标签定义了3个可以被字幕版内容填充的block。block模板告诉模板引擎:字幕版可能会覆盖掉模板中的这些位置

     

    block独立块的语法:

            {% block 名字(随意) %}

                     ''要覆盖的内容''

            {% endblock %}

            

  • 相关阅读:
    java springboot application中设置正确的数字密码连不上数据库问题解决
    JDK8新特性,Optional工具类的简单实用场景
    游戏素材网站
    护眼灯和白炽灯哪个更保护眼睛?推荐真正护眼的护眼灯
    前缀、中缀、后缀表达式相互转换工具
    【Pytorch Lighting】第 4 章:Lightning Flash 中的即食模型
    计算机毕业设计之java+springboot基于vue的地方美食分享网站
    qt判断当前日期是不是当月的最后一天
    Stable Diffusion webui 源码调试(三)
    “可编程网络”的基础概念介绍
  • 原文地址:https://blog.csdn.net/m0_69962105/article/details/134426850