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正则表达式抓取成语网站
Nov 20 Python
python判断字符串编码的简单实现方法(使用chardet)
Jul 01 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
Dec 19 Python
Python实现求数列和的方法示例
Jan 12 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
Dec 15 Python
python 2.7 检测一个网页是否能正常访问的方法
Dec 26 Python
Python 如何提高元组的可读性
Aug 26 Python
Python使用微信接入图灵机器人过程解析
Nov 04 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
Jan 25 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
PyTorch预训练Bert模型的示例
Nov 17 Python
进行数据处理的6个 Python 代码块分享
Apr 06 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
生成sessionid和随机密码的例子
2006/10/09 PHP
php实现简单洗牌算法
2013/06/18 PHP
提交表单后 PHP获取提交内容的实现方法
2016/05/25 PHP
PHP简单日历实现方法
2016/07/20 PHP
ThinkPHP中图片按比例切割的代码实例
2019/03/08 PHP
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
appendChild() 或 insertBefore()使用与区别介绍
2013/10/11 Javascript
JS+CSS实现带小三角指引的滑动门效果
2015/09/22 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
JS实现移动端触屏拖拽功能
2018/07/31 Javascript
vue+element+Java实现批量删除功能
2019/04/08 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
2019/08/29 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
Python 爬虫图片简单实现
2017/06/01 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
pytorch自定义初始化权重的方法
2019/08/17 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
详解Python 循环嵌套
2020/07/09 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
英国领先的大码时装品牌之一:Elvi
2018/08/26 全球购物
给领导的检讨书
2014/02/16 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
教导主任竞聘演讲稿
2014/05/16 职场文书
应届大学生求职信
2014/07/20 职场文书
建筑安全责任书范本
2014/07/24 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
汶川大地震感悟
2015/08/10 职场文书
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技