欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Django从理论到实战(part21)--自定义模板过滤器

程序员文章站 2022-07-07 19:37:45
学习笔记,仅供参考参考自:Django打造大型企业官网–Huang Y;本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的记录一下。自定义模板过滤器理论Django给我们提供了一个接口,可以让我们自定义过滤器,实现自己的需求。过滤器实际上就是python中的一个函数,只不过是把这个函数注册到模板库中,以后在模板中就可以使用这个函数了,但是这个函数的参数有限制,第一个参数必须是这个过滤器需要处理的值,第二...

学习笔记,仅供参考

参考自:Django打造大型企业官网–Huang Y;

本系列Blog以应用为主,理论基础部分我在后端专栏Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的记录一下。



自定义模板过滤器


理论

Django给我们提供了一个接口,可以让我们自定义过滤器,实现自己的需求。

过滤器实际上就是python中的一个函数,只不过是把这个函数注册到模板库中,以后在模板中就可以使用这个函数了,但是这个函数的参数有限制,第一个参数必须是这个过滤器需要处理的值,第二个参数可有可无,如果有,那么就意味着在模板中可以传递参数,并且过滤器的函数最多只能有两个参数。写完过滤器后,需要使用django.template.Library对象将自定义过滤器进行注册。


实践


  • 创建templatetags包

我们在项目newwebsite2的应用book下创建一个templatetags包:

Django从理论到实战(part21)--自定义模板过滤器


  • 创建自定义过滤器

在这个包下面创建一个python文件,我们命名为my_filter.py

from django import template

# 创建模板库对象
register = template.Library()

# 过滤器函数
def mycut(value,mystr):
    return value.replace(mystr, "-")

# 将函数注册到模板库中
register.filter("mycut",mycut)

register.filter方法中第一个参数为自定义过滤器的名字,第二个参数为自定义过滤器所对应的函数


  • 安装app

打开settings.py文件,并将app安装到INSTALLED_APPS列表中:

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

  • 创建模板文件

如果想在模板中使用这个自定义过滤器,就要在模板中load一下这个过滤器所在的模块的名字(也就是这个python文件的名字)。


在templates文件夹中,创建模板文件my_cut.html:

{% load my_filter %}
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>小黄之家</title>
</head>
<body>
    <p>
        {{ "马鞍山"|mycut:"鞍" }}
    </p>

</body>
</html>

  • 发起请求

我们向http://127.0.0.1:8000/my_cut/发起请求:

Django从理论到实战(part21)--自定义模板过滤器

Very Well !


本文地址:https://blog.csdn.net/m0_37422217/article/details/107147744