Django自定义过滤器

由于项目中图片展示需要对描述信息进行过滤,如果长度超过20,则其余部分显示...

首先,创建一个包自定义命为filter,在INSTALL_APP中注册该包。

在这个包下面创建一个templatetags包,它应该和models.py,views.py等在同一级,例如:

filter/
    models.py
    templatetags/

    views.py


添加两个文件到templatetags包,一个__init__.py文件(来告诉Python这是一个包含

Python代码的模块)和一个包含自定义的标签/过滤器定义的文件,后者的文件名是你将在后面用来载入标签的名字

例如,将自定义标签或者过滤器在放在一个叫tepmlate_filter.py文件里,你可以在模板里做下面的事情:

#coding=utf8
from django.template import Library 
from django.template.defaultfilters import stringfilter 
register = Library() 
@register.filter(name='truancate_words', is_safe=True)
@stringfilter 
def truancate_words(value, arg):     
    """     
    Truncates a string after a certain number of words including     
    alphanumeric and CJK characters.      
    Argument: Number of words to truncate after.     
    """     
    try:
        bits = []
        for x in arg.split(u':'):
            if len(x) == 0:
                bits.append(None)
            else:
                bits.append(int(x))
        if int(x) < len(value):
            return value[slice(*bits)] + '...'
        return value[slice(*bits)]


    except (ValueError, TypeError):

        return value # Fail silently.

template_html代码

{% load template_filter %}

{{sample|truancate_words:"20"}}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值