自定义过滤器、标签

一、文件路径配置

  1. 在项目目录下 创建个名为common的Python包  common/__init__.py 
  2. 将common加入到settings文件中的INSTALLED_APP列表中
  3. 在common里面创建目录templatetags,在目录里面创建自定义过滤器及标签文件  templatetags/__init__.py&common_extras.py 

注意:templatetags这个目录名字是固定的,而里面的模块名是自定义的

 

二、自定义过滤器

 

在common_extras.py文件中自定义cut和lower的过滤器功能 

def my_lower(value):
    return value.lower()

def my_cut(value,arg):
    return value.replace(arg,'')

注册过滤器

django.template.Library.filter()

  1. Library.filter()方法需要两个参数:
    • 过滤器的名称(一个字符串对象)
    • 编译的函数 – 一个Python函数(不要把函数名写成字符串)
  2. 可以把register.filter()用作装饰器;
  3. 没有声明 name 参数,Django将使用函数名作为过滤器的名字。
复制代码
from django import template

register = template.Library

def my_lower(value):
    return value.lower()

@register.filter
def my_cut(value,arg):
    return value.replace(arg,'')
复制代码

使用过滤器

在模板中使用自定义的过滤器
需要使用{% load %}标签将我们的自定义模块加载进来
{% load %} 声明将会载入给定模块名中的标签/过滤器

复制代码
{% load common_extras %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Book's Index</title>
</head>
<body>
{######过滤器的使用######}
默认的变小写:{{ mystr |lower }}<br>
自定义的变小写:{{ mystr |my_lower }}<br>
<br>
默认的切片:{{ mystr |cut:' ' }}<br>
自定义的切片:{{ mystr |my_cut:' ' }}
</body>
</html>
复制代码

 

三、自定义简单标签

 简单标签  django.template.Library.simple_tag() 

tag()方法有两个参数:

  1. 模板标记的名称 - 字符串。 如果省略,将使用编译函数的名称。
  2. 编译的函数 – 一个Python函数(不要把函数名写成字符串)与过滤器注册一样,也可以将其用作装饰器。

 

四、自定义包含标签

包含标签 django.template.Library.inclusion_tag() 

tag()方法有两个参数:

  1. 模板标记的名称 - 字符串。 如果省略,将使用编译函数的名称。
  2. 编译的函数 – 一个Python函数(不要把函数名写成字符串)与过滤器注册一样,也可以将其用作装饰器。

包含标签的功能是可以通过渲染另外一个模板来显示一些数据

例如很多地方都可能会用到下面这几行代码,除了choices这个变量不一样之外,其他的都是格式都一样时,那么就可以把这部分代码封装在一个包含标签中.

<ul>
{% for i in choices %}
<li>{{ i }}</li>
{% endfor %}
</ul>

 

作者:ChanceySolo

出处:https://www.cnblogs.com/chancey/p/10187898.html

版权:本作品采用「ChanceySolo-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   ChanceySolo  阅读(231)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示