Django零基础入门之自定义过滤器及模板中的使用

 更新时间:2021年09月02日 11:51:19   作者:孤寒者  
这篇文章主要介绍了Django零基础入门之自定义过滤器及模板中的使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

引言

分析Django内置的模板过滤器:

在这里插入图片描述

通过分析可以将内置的过滤器理解为:
一个带有一个或两个参数的python函数:

  1. (输入的)变量的值【注意:不一定是字符串形式,在前面也讲过可以是哪些类型。】
  2. 参数的值——可以有一个初始值,或者完全没有参数。

自定义过滤器

  1. 新建一个名为ceshi的app以供本文学习使用;
  2. 自定义过滤器及标签所在的templatetags目录放置的位置,我们选择为新建的app特用(这就意味着这个app一定要注册哦!);

在这里插入图片描述

第一个——通过自定义过滤器实现内置过滤器lower!(无参数)

(1)首先

在templatetags模块里,建立一个py文件,编写自定义过滤器,文件名称可以随便定,这里我用common_extras.py:

在这里插入图片描述

(2)内置过滤器lower的使用:

1.项目目录下的urls.py中进行路由分配;

2.创建模板文件:templates/ceshi/test1.html;

3.新建的app里设置路由,编写视图函数

视图函数编写:
(ceshi/views.py文件)

from django.shortcuts import render

# Create your views here.


def test1(request):
    str1 = "Cool Boy"
    return render(request, "ceshi/test1.html", context={"str1": str1})

通过传递一个字符串str1给模板,在模板中使用过滤器对其进行变形。

4.模板文件编写(使用内置过滤器):
(templates/ceshi/test1.html文件)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

原字符串:{{ str1 }}<br>
内置过滤器的使用:{{ str1|lower }}

</body>
</html>

5.效果展示(lower过滤器功能:将变量全部变为小写):

在这里插入图片描述

(3)自定义过滤器的使用:

(common_extras.py文件)

注意:自定义过滤器必须用Library().filter 来进行装饰, 装饰后的函数,才能当作过滤器来使用!

#用于编写自定义过滤器及标签
from django import template

register = template.Library()

@register.filter				# 加此装饰器就可以理解为注册此自定义过滤器。就可以使用了!
def mylower(value):      # value接收变量
    return value.lower()

讲解:

django.template.Library.filter()

1.Library.filter()方法需要两个参数:
a. 过滤器的名称(一个字符串对象)
b. 编译的函数 – 一个Python函数(不要把函数名写成字符串)

2.可以把register.filter()用作装饰器(常用方法,本文也是这样使用!);

3.如果声明name参数,Django将使用nam参数的值作为过滤器的名字。例如:@register.filter(name=“lowermy”),此时在使用这个自定义过滤器,就需要使用lowermy这个名字。

4.没有声明 name 参数,Django将使用函数名作为过滤器的名字。

下面是不常用的方法:

def mycut(value,arg):
    return value.replace(arg,"")
register.filter("mycut",mycut)

(4)模板中使用自定义过滤器:

(templates/ceshi/test1.html文件)

注意:在模板中必须用{%load name%} 来引入自定义过滤器函数所在的py文件,name是py文件的名字。自定义过滤器的使用方法同内置过滤器一样!

在这里插入图片描述

(5)效果展示:

在这里插入图片描述

第二个——通过自定义过滤器实现内置过滤器cut!(有参数)

(1)更改视图函数:

(ceshi/views.py文件)

在这里插入图片描述

(2)更改前端模板——使用内置过滤器cut:

在这里插入图片描述

效果展示(cut过滤器功能:将指定参数变为空字符串):

在这里插入图片描述

(3)自定义过滤器的使用:

(common_extras.py文件)

在这里插入图片描述

(4)模板中使用自定义过滤器:

(templates/ceshi/test1.html文件)

在这里插入图片描述

(5)效果展示:

在这里插入图片描述

到此这篇关于Django零基础入门之自定义过滤器及模板中的使用的文章就介绍到这了,更多相关Django自定义过滤器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解用Python把PDF转为Word方法总结

    详解用Python把PDF转为Word方法总结

    这篇文章主要介绍了详解用Python把PDF转为Word方法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python简单获取二维数组行列数的方法示例

    Python简单获取二维数组行列数的方法示例

    这篇文章主要介绍了Python简单获取二维数组行列数的方法,结合实例形式分析了Python基于numpy模块的二维数组相关运算技巧,需要的朋友可以参考下
    2018-12-12
  • python之实现两个或多个列表相加

    python之实现两个或多个列表相加

    这篇文章主要介绍了python之实现两个或多个列表相加方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 利用Python实现K-Means聚类的方法实例(案例:用户分类)

    利用Python实现K-Means聚类的方法实例(案例:用户分类)

    k-means是发现给定数据集的k个簇的算法,也就是将数据集聚合为k类的算法,下面这篇文章主要给大家介绍了关于利用Python实现K-Means聚类的相关资料,需要的朋友可以参考下
    2022-05-05
  • python使用PyV8执行javascript代码示例分享

    python使用PyV8执行javascript代码示例分享

    这篇文章主要介绍了python使用PyV8执行javascript的小示例,大家参考使用吧
    2013-12-12
  • python实现俄罗斯方块游戏(改进版)

    python实现俄罗斯方块游戏(改进版)

    这篇文章主要为大家详细介绍了python实现俄罗斯方块游戏的改进版,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • 详解Pycharm出现out of memory的终极解决方法

    详解Pycharm出现out of memory的终极解决方法

    这篇文章主要介绍了详解Pycharm出现out of memory的终极解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Pytest如何使用skip跳过执行测试

    Pytest如何使用skip跳过执行测试

    这篇文章主要介绍了Pytest如何使用skip跳过执行测试,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • python如何求圆的面积

    python如何求圆的面积

    在本篇文章里小编给大家分享了关于python求圆面积的实例代码及相关扩展内容,需要的朋友们可以学习下。
    2020-07-07
  • python获取天气接口给指定微信好友发天气预报

    python获取天气接口给指定微信好友发天气预报

    这篇文章主要介绍了python获取天气接口给指定微信好友发天气预报的步骤,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-12-12

最新评论