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


Posted in Python onDecember 14, 2019

这篇文章主要介绍了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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python和C/C++交互的几种方法总结
May 11 Python
python机器学习之神经网络(一)
Dec 20 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
python中文编码与json中文输出问题详解
Aug 24 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
Dec 22 Python
python mqtt 客户端的实现代码实例
Sep 25 Python
Python API len函数操作过程解析
Mar 05 Python
python批量处理多DNS多域名的nslookup解析实现
Jun 28 Python
通俗讲解python 装饰器
Sep 07 Python
使用AJAX和Django获取数据的方法实例
Oct 25 Python
Python获取百度热搜的完整代码
Apr 07 Python
django序列化serializers过程解析
Dec 14 #Python
Python搭建HTTP服务过程图解
Dec 14 #Python
Pyqt5自适应布局实例
Dec 13 #Python
解决安装pyqt5之后无法打开spyder的问题
Dec 13 #Python
PyQT5 emit 和 connect的用法详解
Dec 13 #Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 #Python
Python assert关键字原理及实例解析
Dec 13 #Python
You might like
JavaScript 数组运用实现代码
2010/04/13 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
JavaScript中window、doucment、body的解释
2013/08/14 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
jQuery实现带动画效果的多级下拉菜单代码
2015/09/08 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
详解webpack2+React 实例demo
2017/09/11 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
2017/12/27 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
[02:38]DOTA2亚洲邀请赛小组赛精彩集锦:Wings完美团击溃对手
2017/03/29 DOTA
[04:59]2018DOTA2亚洲邀请赛 4.7 Mineski夺冠时刻
2018/04/09 DOTA
python获取android设备的GPS信息脚本分享
2015/03/06 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
python获取时间及时间格式转换问题实例代码详解
2018/12/06 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
2019/07/31 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
Python过滤序列元素的方法
2020/07/31 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
pandas实现导出数据的四种方式
2020/12/13 Python
python中spy++的使用超详细教程
2021/01/29 Python
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
Currentbody美国/加拿大:美容仪专家
2020/03/09 全球购物
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
贯彻学习两会心得体会范文
2014/03/17 职场文书
党课培训主持词
2014/04/01 职场文书
《故都的秋》教学反思
2014/04/15 职场文书
演讲比赛策划方案
2014/06/11 职场文书
交通安全教育主题班会
2015/08/12 职场文书
解决Mysql报错 Table 'mysql.user' doesn't exist
2022/05/06 MySQL