6. 自定义过滤器

问题

之前想要在模板里,从字典里取出值然后展示。但是发现没有相关的语法,只有将key 和value同时遍历的方法。于是自定义过滤器进入了视野。

<div class="card-columns" style="margin: 1%">
            {% for label in labels %}
            <div class="card bg-light">
                <p><strong>{{ label }}</strong></p>
                <div class="card-body text-center">
                    {% for record in collections|dic_value:label %}
                    <a href = '{{ record.title_link }}'><p class="card-text">{{ record.item_title }}</p></a>
                    {% endfor %}
                </div>
            </div>
            {% endfor %}
        </div>

语法:{{ 变量|function:参数 }}

变量有一个,参数最多一个,function就是我们自己定义的python函数。
Django里面自带了一些内置的过滤器:
{{value | add : "2"}} ——> 返回值为 value+2
{{value |upper}} ——> 返回值为value的大写形式

流程

  1. 在app中建立一个包templatetags(不可变的名字)
  2. 建立一个‘名字.py’,名字可以随便取。这里假定filter


  3. 编写这个.py
from django import template
#创建一个库对象
register = template.Library()
# 利用装饰器赋予这个函数过滤器的功能
@register.filter
# 自定义这个函数,其功能就是我们想要的过滤器功能。
def dic_value(dic, key):
    return dic[key]
  1. 在对应的html里最上面加上{% load filter %},这样这个过滤器就可以使用了。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,743评论 1 92
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,959评论 0 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,828评论 19 139
  • AngularJS是什么?AngularJs(后面就简称ng了)是一个用于设计动态web应用的结构框架。首先,它是...
    200813阅读 5,568评论 0 3
  • 人生起起伏伏 股市跌跌荡荡 峰回路转 水来土掩 拨开迷雾见月明 顿悟过后思己心
    曹雨馨阅读 1,720评论 0 0

友情链接更多精彩内容