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 相关文章推荐
python3访问sina首页中文的处理方法
Feb 24 Python
python中实现精确的浮点数运算详解
Nov 02 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
python 从csv读数据到mysql的实例
Jun 21 Python
Python函数any()和all()的用法及区别介绍
Sep 14 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
实例讲解Python中整数的最大值输出
Mar 17 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 Python
Python AutoCAD 系统设置的实现方法
Apr 01 Python
Xadmin+rules实现多选行权限方式(级联效果)
Apr 07 Python
python 调用API接口 获取和解析 Json数据
Sep 28 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 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
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
2009/03/10 PHP
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
菊花转动的jquery加载动画效果
2018/08/19 jQuery
支付宝小程序tabbar底部导航
2018/11/06 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
2019/05/16 Javascript
vue实例的选项总结
2020/06/09 Javascript
Python 代码性能优化技巧分享
2012/08/07 Python
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
Vilebrequin美国官方网上商店:法国豪华泳装品牌
2020/02/22 全球购物
商务日语毕业生自荐信范文
2013/11/14 职场文书
大学生创业计划书的用途
2014/01/08 职场文书
文明家庭先进事迹材
2014/01/27 职场文书
5s推行计划书
2014/05/06 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书
小学生安全教育广播稿
2014/10/20 职场文书
学校政风行风自查自纠报告
2014/10/21 职场文书
项目安全员岗位职责
2015/02/15 职场文书
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL