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用ConfigObj读写配置文件的实现代码
Mar 04 Python
python修改操作系统时间的方法
May 18 Python
Selenium chrome配置代理Python版的方法
Nov 29 Python
详解Python下载图片并保存本地的两种方式
May 15 Python
python使用yield压平嵌套字典的超简单方法
Nov 02 Python
python创建子类的方法分析
Nov 28 Python
关于numpy数组轴的使用详解
Dec 05 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
Jan 16 Python
python 安装移动复制第三方库操作
Jul 13 Python
python 基于opencv操作摄像头
Dec 24 Python
Pytest之测试命名规则的使用
Apr 16 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
php5新改动之短标记启用方法
2008/09/11 PHP
PHP与Java进行通信的实现方法
2013/10/21 PHP
PHP中判断变量为空的几种方法小结
2013/11/12 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
PHP双向链表定义与用法示例
2018/01/31 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
[08:40]Navi Vs Newbee
2018/06/07 DOTA
[55:39]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第二场 1月19日
2021/03/11 DOTA
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
Python二元赋值实用技巧解析
2019/10/25 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
2020/06/10 Python
keras 简单 lstm实例(基于one-hot编码)
2020/07/02 Python
香港礼品网站:GiftU eshop
2017/09/01 全球购物
法雷奥SQA(electric)面试问题
2016/01/23 面试题
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
运动会广播稿300字
2015/08/19 职场文书
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸