django自定义模板标签过程解析

作者:pfeiliu 时间:2023-07-29 12:34:57 

这篇文章主要介绍了django自定义模板标签过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

代码布局

自定义模板标签必须位于django的某个应用中

该应用中新建templatetags目录,和models.py,views.py同一级别

结构如下:


polls/
 __init__.py
 models.py
 templatetags/
   __init__.py
   poll_extras.py
 views.py

模板中调用标签:


{% load poll_extras %}

为了让load标签工作,该标签所在应用必须在INSTALLED_APPS中

templatetags里有多少个模块没有限制,因为{% load %}会载入给定模块名的标签过滤器,而不是应用的名称

为了成为一个可用的标签库,必须注册,放在模块顶部


from django import template
register=template.Library()

自定义标签过滤器

自定义过滤器就是一个带有一个或两个参数的Python 函数:

  • (输入的)变量的值 —— 不一定是字符串形式。

  • 参数的值 —— 可以有一个初始值,或者完全不要这个参数。

例如,在{{ var|foo:"bar" }}中,foo过滤器应当传入变量var和参数 "bar"。


def cut(value, arg):
 """Removes all values of arg from the given string"""
 return value.replace(arg, '')

下面是这个过滤器应该如何使用:


{{ somevariable|cut:"0" }}

大多数过滤器没有参数。在这种情况下,你的函数不带这个参数即可。示例︰


def lower(value): # Only one argument.
 """Converts a string into all lowercase"""
 return value.lower()

注册自定义过滤器

方法1:


register.filter('cut', cut)
register.filter('lower', lower)

Library.filter()方法需要两个参数:

过滤器的名称(一个字符串对象)

编译的函数 – 一个Python函数(不要把函数名写成字符串)

方法2:register.filter()用作装饰器


@register.filter(name='cut')
def cut(value, arg):
 return value.replace(arg, '')

@register.filter
def lower(value):
 return value.lower()

下边是实例:

django自定义模板标签过程解析


my.pyfrom django import template
register=template.Library()
@register.filter
def myadd(param):
 res=param+"************************"
 return res
@register.filter
def mycul(param,num):
 res=param*num
 return res

views.pydef tags(request):
 print("hello")
 return render(request,'mytags.html')

tags.html<body>
 {% load my %}
 {{ 'tags'|myadd }}

{{ 'tags'|mycul:5 }}
</body>

结果:

tags************************ tagstagstagstagstags

来源:https://www.cnblogs.com/pfeiliu/p/11924336.html

标签:django,自定义,模板,标签
0
投稿

猜你喜欢

  • 简单谈谈python中的语句和语法

    2023-03-03 12:03:13
  • 快速解决SQL server 2005孤立用户问题

    2009-01-04 14:02:00
  • python实现学生管理系统开发

    2021-08-26 20:43:17
  • Numpy中如何创建矩阵并等间隔抽取数据

    2023-01-14 16:21:16
  • 详解Idea 2020 找不到或无法安装官方汉化包解决方案

    2022-03-21 23:01:29
  • java配置数据库连接池的方法步骤

    2024-01-17 21:00:32
  • 35个JS中实用工具函数的代码分享

    2024-05-03 15:08:25
  • Python使用filetype精确判断文件类型

    2023-07-09 12:30:12
  • 命令行传递参数argparse.ArgumentParser的使用解析

    2023-09-09 12:28:17
  • MSSQL存储过程分页,ASP存储过程分页

    2009-09-11 12:50:00
  • Go 语言进阶单元测试示例详解

    2024-02-07 18:17:06
  • 完全讲解 使用MSCS建立SQL Server集群

    2009-01-19 14:10:00
  • 教你用Python写安卓游戏外挂

    2023-10-21 17:43:29
  • 简单了解操作mysql数据库的命令行神器mycli

    2024-01-24 03:44:14
  • 如何在Flask中实现数据分组流程详解

    2021-11-15 06:53:59
  • 微信小程序(订阅消息)功能

    2024-04-28 09:36:48
  • mysql与sqlserver的所有区别

    2009-02-27 16:18:00
  • Python反爬机制-验证码功能的具体实现过程

    2023-02-05 18:53:19
  • Selenium 模拟浏览器动态加载页面的实现方法

    2023-06-04 11:06:54
  • python3使用pyqt5制作一个超简单浏览器的实例

    2023-04-12 19:44:51
  • asp之家 网络编程 m.aspxhome.com