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的轻便web框架Bottle
Apr 08 Python
Python聚类算法之DBSACN实例分析
Nov 20 Python
Python中列表元素转为数字的方法分析
Jun 14 Python
Python使用OpenCV进行标定
May 08 Python
python石头剪刀布小游戏(三局两胜制)
Jan 20 Python
python3.6使用tkinter实现弹跳小球游戏
May 09 Python
python中return的返回和执行实例
Dec 24 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
Mar 05 Python
Python如何转换字符串大小写
Jun 04 Python
python集合能干吗
Jul 19 Python
pytorch fine-tune 预训练的模型操作
Jun 03 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购物网站支付paypal使用方法
2010/11/28 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
2011/10/13 PHP
如何在PHP中使用正则表达式进行查找替换
2013/06/13 PHP
PHP中捕获超时事件的方法实例
2015/02/12 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
js removeChild 障眼法 可能出现的错误
2009/10/06 Javascript
JQuery选择器特辑 详细小结
2012/05/14 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
vue基于better-scroll实现左右联动滑动页面
2020/06/30 Javascript
[03:55]2016国际邀请赛中国区预选赛首日TOP10精彩集锦
2016/06/27 DOTA
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
python基础教程之Filter使用方法
2017/01/17 Python
浅谈python import引入不同路径下的模块
2017/07/11 Python
对python中的for循环和range内置函数详解
2018/04/17 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
2018/06/04 Python
python 定义n个变量方法 (变量声明自动化)
2018/11/10 Python
python如何将多个PDF进行合并
2019/08/13 Python
Python高级property属性用法实例分析
2019/11/19 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
TensorFlow实现checkpoint文件转换为pb文件
2020/02/10 Python
python识别验证码图片实例详解
2020/02/17 Python
Django模板标签{% for %}循环,获取制定条数据实例
2020/05/14 Python
keras 权重保存和权重载入方式
2020/05/21 Python
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
儿科护士自我鉴定
2013/10/14 职场文书
开办饭店创业计划书
2013/12/28 职场文书
小学三年级数学教学反思
2014/01/31 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
基于Python实现将列表数据生成折线图
2022/03/23 Python