Django自定义过滤器

牧云@^-^@ 提交于 2019-12-28 03:03:42

Django自定义过滤器

接上一节: https://blog.csdn.net/LeeSkyRa/article/details/103730085

 

自定义模板过滤器及使用大概分为以下几步:

1、在项目目录下创建一个 common 包,在 common 包下创建一个 templatetags 包,在 templatetags 包里创建一个 myfilter.py 文件,用以写自定义过滤器代码。

2、common/templatetags/myfilter.py 写自定义过滤器,并注册

 

from django import template
register=template.Library()

def rpl(stg):
    return stg.replace('o','*-*')
register.filter('rpl',rpl)


@register.filter
def rvs(args):
    return list(reversed(args))

@register.filter
def rmdlt(args):
    return list(set(sorted(args)))

 

3、在项目的 settings.py 文件注册 common app

 

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'common',
]

 

4、在模板中加载过滤器模块,并在需要的地方使用自定义过滤器

 

{% extends 'app_st/base.html' %}
{% load myfilter %}
{% load static %}
{% block title %}VARIABLE{% endblock %}
{% block css %}{% static 'app_st/css/variable.css' %}{% endblock %}
{% block content %}
    <div>
        <p>列表 {{ li }} 反序排列 : {{ li | rvs }}</p>
        <p>字符串 {{ srg }} 替换 'o' 为 '*-*' : {{ srg | rpl }}</p>
        <p>列表 {{ li_1 }} 去重正序排列 : {{ li_1 | rmdlt }}</p>
    </div>
{% endblock %}

 

详情见下图(由于页面呈现内容有限,故上节的过滤器有关代码部分已清空):

 

 

下面我们就启动 django 服务,浏览器地址栏输入 127.0.0.1:8000/app/variable , 查看效果:

 

 

这样,自定义模板过滤器及使用就实现咯!

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!