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之编写类之三子类
Oct 11 Python
python生成随机mac地址的方法
Mar 16 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
查看python下OpenCV版本的方法
Aug 03 Python
OpenCV+Python识别车牌和字符分割的实现
Jan 31 Python
解决reload(sys)后print失效的问题
Apr 25 Python
Python基于Tkinter编写crc校验工具
May 06 Python
Python操作Excel把数据分给sheet
May 20 Python
Python中的wordcloud库安装问题及解决方法
May 27 Python
详解Python中的路径问题
Sep 02 Python
一篇文章带你搞懂Python类的相关知识
May 20 Python
pandas中DataFrame重置索引的几种方法
May 24 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
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
PHP中的表达式简述
2016/05/29 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
关于文本框的一些限制控制总结~~
2010/04/15 Javascript
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
vue二级路由设置方法
2018/02/09 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
Python实现115网盘自动下载的方法
2014/09/30 Python
Python中的包和模块实例
2014/11/22 Python
python中Flask框架简单入门实例
2015/03/21 Python
Python中的高级函数map/reduce使用实例
2015/04/13 Python
python操作kafka实践的示例代码
2019/06/19 Python
Django 重写用户模型的实现
2019/07/29 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
python socket通信编程实现文件上传代码实例
2019/12/14 Python
用CSS3绘制三角形的简单方法
2015/07/17 HTML / CSS
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
网络宣传方案
2014/03/15 职场文书
倡议书范文大全
2015/04/28 职场文书
圆明园观后感
2015/06/03 职场文书
《金色的草地》教学反思
2016/02/17 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书
深度学习tensorflow基础mnist
2021/04/14 Python
CSS变量实现主题切换的方法
2021/06/23 HTML / CSS