Django自定义模板过滤器

        django 在views中有数据需要通过字典(dict)的方式传递给template,该字典中又包含了字典,而且字典中的键值还是一个对象,在template中处理传递过来的数据的时候,字典不能通过键值的方式取出原有数据,对象不能通过(.)的方式直接取出数据,通过大量地查阅资料,最终通过过滤器(filter)的方式解

在应用中创建templatetags目录,当前示例为”booktest/templatetags“,创建init文件,内容为空

在”booktest/templatetags“目录下创建filters.py文件,代码如下

# coding=utf-8
# 引入模板语言的库类
from django.template import Library

# 创建实例对象
register = Library()

# 将函数注册成过滤器,函数mod就可以在模板中当作过滤器使用
@register.filter
def mod(num):
    return num % 2

在templates/booktest/guolvqi.html中,使用自定义过滤器

首先使用load标签引入模块

<ul>
{% load filters %}
    {% for book in blist1 %}
        {% if forloop.counter|mod %}
        <li style="background-color: red;">{{ book.btitle }}</li>
        {% else %}
        <li style="background-color: blue;">{{ book.btitle }}</li>
        {%endif %}
    {% endfor %}

</ul>

输出效果为:


当Django内置过滤器满足不了我们的需求时,可以通过自定义过滤器来实现






猜你喜欢

转载自blog.csdn.net/master_ning/article/details/80325410