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常规方法实现数组的全排列
Mar 17 Python
基于Python如何使用AIML搭建聊天机器人
Jan 27 Python
Python实现拷贝多个文件到同一目录的方法
Sep 19 Python
python itchat实现微信自动回复的示例代码
Aug 14 Python
VSCode下配置python调试运行环境的方法
Apr 06 Python
Python多进程与服务器并发原理及用法实例分析
Aug 21 Python
线程安全及Python中的GIL原理分析
Oct 29 Python
如何解决tensorflow恢复模型的特定值时出错
Feb 06 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
Feb 26 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
Jul 28 Python
python编写函数注意事项总结
Mar 29 Python
教你用Python matplotlib库制作简单的动画
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
《雄兵连》《烈阳天道》真的来了
2020/07/13 国漫
建站常用13种PHP开源CMS比较
2009/08/23 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
2014/06/29 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
JS的递增/递减运算符和带操作的赋值运算符的等价式
2007/12/08 Javascript
JS版网站风格切换实例代码
2008/10/06 Javascript
修改file按钮的默认样式实现代码
2013/04/23 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
浅谈javascript中createElement事件
2014/12/05 Javascript
JavaScript中的对象的extensible属性介绍
2014/12/30 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
jQuery的框架介绍
2016/05/11 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
基于jQuery实现仿微博发布框字数提示
2016/07/27 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
Angular17之Angular自定义指令详解
2018/01/21 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
js实现简单的秒表
2020/01/16 Javascript
Python中转换角度为弧度的radians()方法
2015/05/18 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
使用tensorflow实现线性回归
2018/09/08 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
python实现mean-shift聚类算法
2020/06/10 Python
用 python 进行微信好友信息分析
2020/11/28 Python
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
幼儿园区域活动总结
2014/05/08 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
庆元旦主持词
2015/07/06 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
2019思想汇报范文
2019/05/21 职场文书
基于JavaScript实现省市联动效果
2021/06/22 Javascript
详解Python flask的前后端交互
2022/03/31 Python
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers