[oldboy-django][2深入django]django模板使用函数

Posted liuzhipenglove

tags:

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

1 模板引入子html--include

技术分享
7 模板引擎
    - 母版

    - include,导入公共的html
        a. 用法:{% include "pub.html" %}, pub.html还可以添加 {{ name }}
        b. 一个页面可以导入多次,一个html只能有一个母版
        c.样例
            # public.html
                <div class="public">
                    <div class="content">
                        {{ userinfo }}
                    </div>
                </div>

            # app02_test.html
                <h3>include</h3>
                {% include "public.html" %}
                {% include "public.html" %}

            # views
            def test(request):
                return render(request, app02_test.html, {userinfo:{k1:v1, k2: v2}})
View Code

2 模板使用(渲染数据 + 调用函数)

技术分享
- 模板
        - 接收被渲染数据
            views参数传递:{userInfo: {k1: v1, k2:v2}}
            前端接收可以
                {% for v in userInfo.values %}
                {% endfor %}
            或者
                {% for k,v in userInfo.items %}
                {% endfor %}
            或者
                {% for k in userInfo.keys %}
                {% endfor %}

        - 模板执行函数, 而且函数不是js函数,而是py里面的函数
            a.{{ name|upper}}  // name是后台传递给前端的带渲染数据,upper是转换大写函数
View Code

3 自定义函数,供模板调用

技术分享
- 自定义模板filter
            a.在应用创建文件夹templatetags
            b.创建任意py文件, xx.py
                from django import template
                register = template.Library()

                @register.filter
                def my_upper(value):
                    return value.upper()
            c.在模板文件导入xx.py
                开头导入 {% load xx %}

            d.在模板使用函数
                {{ liuzhipeng|my_upper}}  ,前面的liuzhipeng为参数传递给my_upper

            e. 一定要注册app_02


        - 自定义tag
            a.在应用创建文件夹templatetags
            b.创建任意py文件, xx.py
                from django import template
                register = template.Library()

                @register.simple_tag
                def my_concat(arg1, arg2):
                    return  arg1 + arg2
            c.在模板文件导入xx.py
                开头导入 {% load xx %}

            d.在模板使用函数tag
                {% my_concat "alex" "is sb" %}

            e. 一定要注册app_02


        - filter 和simple_tag区别
            a. filter最多能有两个参数
            b. filter模板调用方式: {{ 参数|函数}}
            c. simple_tag参数个数无限制
            d. simple_tag使用方式:{% 函数 参数 参数 %}
            e. {% if name|my_bool %}  可以这样使用filter,而tag则不能
            f. simple_tag反向生成url
                {%  url  url别名 %}
            g. 可以{% if name|my_bool %}, 但是simple_tag不行
View Code

 

以上是关于[oldboy-django][2深入django]django模板使用函数的主要内容,如果未能解决你的问题,请参考以下文章

[oldboy-django][2深入django]老师管理--查看,添加,编辑

[oldboy-django][2深入django]初始Form组件

[oldboy-django][2深入django]点击刷新验证码

[oldboy-django][2深入django]学生管理(Form)--查看(分页)

[oldboy-django][2深入django]登录注册页面验证码

[oldboy-django][2 深入django] django一个请求的生命周期 + WSGI + 中间件