6. 自定义过滤器

2018-05-14  本文已影响0人  何大炮

问题

之前想要在模板里,从字典里取出值然后展示。但是发现没有相关的语法,只有将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 %},这样这个过滤器就可以使用了。
上一篇 下一篇

猜你喜欢

热点阅读