• Django 模板函数


    Django 模板函数

    在模板中的函数是只需要函数名,不用加括号,自动执行

    在前端中的函数

    不用加括号,函数自动执行

    前端

    {% for item in userinfo.keys %}
        <h3>{{ item }}</h3>
    {% endfor %}
    
    {% for item in userinfo.values %}
        <h3>{{ item }}</h3>
    {% endfor %}
    
    {% for k,v in userinfo.items %}
        <h3>{{ k }}-{{ v }}</h3>
    {% endfor %}
    

    后台,
    后台发送的是字典

    def test(request):
        return render(request,'test.html',{
            'userinfo':{'k1':'v1','k2':'v2'}
        })
    

    转换大写

    {{ name|upper }}  {# 大写 #}
    

    本质是调用的Python的函数

    @register.filter(is_safe=False)
    @stringfilter
    def upper(value):
        """Converts a string into all uppercase."""
        return value.upper()
    

    模板中自定义函数

    实现步骤:

    • 1、在任意APP中创建templatetags模块

    • 2、在模块中穿件任意的py文件,如xx.py

    • 3、一定要写register = template.Library()

    • 4、在html中写load xx

    simple_filter

    filter只能传递2个参数

    可以用作条件判断,复杂的条件判断直接在simple_tag的函数中写

    from django import template
    
    register = template.Library()
    
    @register.filter()  # 使用这个装饰器
    def my_upper(value):
        return value.upper()
    
    {% load xx %}  
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        {{ name|my_upper }}
    </body>
    </html>
    

    接收多个参数

    @register.filter()
    def my_upper(value,arg):
        return value+arg
    
    {{ name|my_upper:"12456" }} 后面用冒号传递,不能用空格
    

    simple_tag

    • 反向生成URL就是用的simple_tag

    simple_tag能传递多个参数,
    引入的方式是和filter不同的e

    from django import template
    
    register = template.Library()
    
    @register.simple_tag()
    def my_lower(value):
        return value.lower()
    
    {% load xx %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        {% my_lower "aABDJ" %}
    </body>
    </html>
    

    多个参数

    @register.simple_tag()
    def my_add(value,a1,a2,a3):
        return value+a1+a2+a3
    
    {% my_add "he" "llo" "wo" "rld" %}
    

    总结:

    - simple_filter
        - 最多两个参数,方式: {{第一个参数|函数名称:"第二个参数"}}
        - 可以做条件判断
    - simple_tag
        - 无限制: {% 函数名 参数 参数%}
    

    include 组件

    {% include 'pub.html' %}
    
  • 相关阅读:
    聚合查询2.0
    分词器2.0
    搜索和查询2.0
    Mapping2.0
    索引的CRUD2.0
    微信小程序:一则iOS下用video播放mp4文件问题排查
    flutter——android报错Manifest merger failed : Attribute application@allowBackup value=(false)
    HTML-meta
    HTML-实体
    html-vscode-liveServer
  • 原文地址:https://www.cnblogs.com/Python666/p/7225808.html
Copyright © 2020-2023  润新知