django常用过滤器和标签运算符,自动定义标签,自定义过滤器,

本文深入探讨了Django框架中的模板系统,详细介绍了如何在views.py中分配数据并加载模板,以及如何在模板中使用各种内置过滤器和标签,包括自定义过滤器和标签的创建与使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

views.py

def tmp_demo(request):

    # 分配数据
    context = {
        'var':'iloveyou',
        'arr':['aa','bb','cc'],
        'user':{'username':'admin','email':'admin@qq.com'},
        'con':'<h1 style="color:red;">iloveyou</h1>',
        # 'con':'<script>alert("hello")</script>'
        'num':12
        }
    
    # 加载模板
    return render(request,'tmp/1.html',context)

1.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>模板文件</title>
</head>
<body>
    <div style="min-height: 400px;">
        <ul>

        <li>过滤器的使用:转小写 {{ var|upper }}</li> 
        <li>过滤器的使用:链式使用 {{ var|upper|lower }}</li>
        <li>自动转义HTML{{ con }}</li>
        <li>关闭自动转义{{ con|safe }}</li>

        <li>分割自动分割:内容自动填充到:‘’里{{ arr|join:'</li><li>' }}</li>
        <li>如果没有该变量,那么输出默认值{{ abc|default:'AAA'}}</li>

        <li>加法运算:用num变量加上5{{ num|add:5 }}</li>
        <li>减法运算:用num变量减去5{{ num|add:-5 }}</li>
        
        {% load diytags %} {# 导入diytags.py模板 #}
        <li>自定义过滤器转大写:{{ var|yc_upper }}</li>{# 自定义转大写 #}
        <li>自定义标签加法运算:{% jia 10 2 %}</li>{# 自定义加法#}
        <li>乘法{ %  widthratio 5 1 100  % } {# note:等同于:(5 / 1) * 100 ,结果返回500 #}</li>
        <li>除法{ %  widthratio 5 100 1  % } {#note:等同于:(5 / 100) * 1,则结果返回0.05 #}</li>
    </ul>
    </div>

</body>
</html>

自定义 标签 或 过滤器

{{}}的是过滤器,{%%}的是标签

1.在应用下创建一个 templatetags 文件夹

2,在 templatetags 包下创建 一个模块文件 diytags.py
    from django import template
    register = template.Library()

    # 如果register.后面是filter那么就是定义了一个,过滤器
    @register.filter
    # 自己创建函数,并进行操作,然后返回
    def yc_upper(val):
        # print ('val from template:',val)
        #转大写
        return val.upper()

    # 自定义标签
    from django.utils.html import format_html
    # 如果register后面是simple_tag,那么就是自定义一个标签
    @register.simple_tag
    def jia(a,b):
        res = int(a) + int(b)
        return res

3,在需要使用的模板中 导入 自定义的模块
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值