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实现udp数据报传输的方法
Sep 26 Python
Python的Bottle框架的一些使用技巧介绍
Apr 08 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
Python之web模板应用
Dec 26 Python
python操作列表的函数使用代码详解
Dec 28 Python
Python3实现的画图及加载图片动画效果示例
Jan 19 Python
pandas 转换成行列表进行读取与Nan处理的方法
Oct 30 Python
Django模型序列化返回自然主键值示例代码
Jun 12 Python
python导入pandas具体步骤方法
Jun 23 Python
python和php哪个容易学
Jun 19 Python
音频处理 windows10下python三方库librosa安装教程
Jun 20 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
Jul 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中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
js的匿名函数使用介绍
2013/12/11 Javascript
javascript表格隔行变色加鼠标移入移出及点击效果的方法
2015/04/10 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
使用nodejs爬取前程无忧前端技能排行
2017/05/06 NodeJs
JavaScript实现简单音乐播放器
2020/04/17 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
2019/12/12 Javascript
学习python的几条建议分享
2013/02/10 Python
Python3基础之函数用法
2014/08/13 Python
Python简单实现Base64编码和解码的方法
2017/04/29 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
python numpy 一维数组转变为多维数组的实例
2018/07/02 Python
对Python 内建函数和保留字详解
2018/10/15 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
python字符串中匹配数字的正则表达式
2019/07/03 Python
django在开发中取消外键约束的实现
2020/05/20 Python
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
澳大利亚在线生活方式商店:Mytopia
2018/07/08 全球购物
经济管理专业自荐信
2013/12/30 职场文书
财务会计人员求职的自我评价
2014/01/13 职场文书
反邪教标语
2014/06/23 职场文书
暑期政治学习心得体会
2014/09/02 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
人工作失职检讨书
2015/05/05 职场文书
致创业您:正能量激励人心句子(48条)
2019/08/15 职场文书
vue router 动态路由清除方式
2022/05/25 Vue.js