django模板

Posted zhanggq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django模板相关的知识,希望对你有一定的参考价值。

1 模版简介
DTL:django模板语言
核心:
变量 {{ }}
标签 {% %}

2 模版语法之变量
-变量渲染:{{变量}}
-变量深度查询:{{变量.索引/key值/方法}}

3 模版之过滤器
变量之过滤器(是个函数)
-语法:(后面只能传一个参数)
{{变量名|过滤器的名字:参数}}
-内置过滤器:
<p>{{ age|add:3 }}</p>
<p>{{ name|length }}</p>
<p>{{ bol|default:‘123‘ }}</p>
<p>{{ ll2|default:‘我是空的‘ }}</p>
<p>{{ file_size|filesizeformat }}</p>
<p>{{ ctime }}</p>
<p>{{ ctime|date:‘Y年m月‘ }}</p>
<p>{{ name|slice:‘2:4‘ }}</p>
<p>{{ name|truncatechars:6 }}</p>
<p>{{ name2|truncatewords:2}}</p>
<p>{{ href|safe }}</p>

4 模版之标签

语法:{% %}

技术分享图片
-foo是一个可迭代对象
            {% for a in foo %}

            {% endfor %}
        -forloop:counter,couter0,revcounter,revcouter0,first,last,parentloop:父循环的forloop对象
        -for--empty的使用
            {% for foo in ll2 %}
                {{ foo }}
            {% empty %}
                没有值啊
            {% endfor %}
        -if判断
            {% if ll2 %}
                ll2 有值
            {% elif ll %}
                ll有值
            {% else %}
                ll2 没有值
            {% endif %}
        -with重命名
            {% with dic.hobby.1 as a %}
            {#{% with a=dic.hobby.1 %}#}
                {{ a }}
                <p>aaaa</p>
                {{ a }}

            {% endwith %}
View Code

5 自定义过滤器

技术分享图片
1 确认app是否在settings中注册
        2 在app下创建templatetags的模块(名字固定)
        3 在模块下创建py文件(名字随意)--->在模板中{% load py文件名字%}
        4 在py文件中写过滤器
            from django.template import Library
            register = Library()
            #指定了name之后,模板上使用的时候,直接用name调用,如果没指定name,就用函数的名字
            # 过滤器最多有两个参数
            @register.filter(name=myadd)
            def my_add(a,b):
                print(a+b)
                return a+b
        5 模板中使用
            -1 {% load py文件名字%}
            -2 {{ 变量|myadd:1}}
View Code

6 自定义标签

技术分享图片
1 确认app是否在settings中注册
        2 在app下创建templatetags的模块(名字固定)
        3 在模块下创建py文件(名字随意)--->在模板中{% load py文件名字%}
        4 在py文件中写过滤器
            from django.template import Library
            register = Library()
            #指定了name之后,模板上使用的时候,直接用name调用,如果没指定name,就用函数的名字
            # 过滤器最多有两个参数
            @register.simple_tag(name=mytag)
            def my_tag(a,b,c):
                return a+b+c
        5 模板中使用
            -1 {% load py文件名字%}
            -2 {% mytag 参数1 参数2 参数3%}
View Code

7 标签和过滤器的区别:
1 标签可以传多个参数,过滤器最多只能传2个
2 使用过滤器{{ }} 标签使用:{% %}
3 ****重点:过滤器可以放在if判断后,标签不能放在if判断后

 


























以上是关于django模板的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 片段在 Django 模板中不起作用

如何在扩展另一个文件的 django 模板中使用带有动态内容的 html 块片段?

Django模板过滤器 - 一行

如何在Django视图中使用for循环返回每次迭代[关闭]

VSCode自定义代码片段——.vue文件的模板

如何使用引导程序和 for 循环在 django 中创建电影片段?