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 13 Python
Python爬取qq music中的音乐url及批量下载
Mar 23 Python
python中如何使用朴素贝叶斯算法
Apr 06 Python
Python2.X/Python3.X中urllib库区别讲解
Dec 19 Python
python opencv人脸检测提取及保存方法
Aug 03 Python
Python使用Selenium爬取淘宝异步加载的数据方法
Dec 17 Python
Python OrderedDict的使用案例解析
Oct 25 Python
python十进制转二进制的详解
Feb 07 Python
Django REST framwork的权限验证实例
Apr 02 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
May 12 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
Aug 04 Python
基于Python的EasyGUI学习实践
May 07 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
PHP垃圾回收机制简单说明
2010/07/22 PHP
PHP在线生成二维码代码(google api)
2013/06/03 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
JQuery中的事件及动画用法实例
2015/01/26 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
AngularJS基础 ng-keyup 指令简单示例
2016/08/02 Javascript
简易的JS计算器实现代码
2016/10/18 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
vue-iview动态新增和删除的方法
2020/06/17 Javascript
结合axios对项目中的api请求进行封装操作
2020/09/21 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
Python设计模式之代理模式实例
2014/04/26 Python
用python删除java文件头上版权信息的方法
2014/07/31 Python
python中去空格函数的用法
2014/08/21 Python
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
Python实现多线程/多进程的TCP服务器
2019/09/03 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
python asyncio 协程库的使用
2021/01/21 Python
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
银行服务感言
2014/03/01 职场文书
大学生见习期满自我鉴定
2014/09/13 职场文书
秋季运动会演讲稿
2014/09/16 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技
Python开发简易五子棋小游戏
2022/05/02 Python
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android