zoukankan      html  css  js  c++  java
  • [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
  • 相关阅读:
    .Net Remoting使用总结
    MacOS入门
    第一部分_Mac技巧
    国内安装Homebrew
    MacOS工具
    org.springframework.beans.factory.UnsatisfiedDependencyException异常
    五天一体_企业权限管理(SSM整合)
    00_02_使用Parallels Desktop创建Windos7虚拟机
    00_01_使用Parallels Desktop创建WindosXP虚拟机
    OpenCV中几何形状识别与测量
  • 原文地址:https://www.cnblogs.com/liuzhipenglove/p/7798245.html
Copyright © 2011-2022 走看看