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 相关文章推荐
详解JavaScript编程中的window与window.screen对象
Oct 26 Python
Python采用Django制作简易的知乎日报API
Aug 03 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
Dec 15 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
MAC中PyCharm设置python3解释器
Dec 15 Python
Python运维自动化之nginx配置文件对比操作示例
Aug 29 Python
Jupyter打开图形界面并画出正弦函数图像实例
Apr 24 Python
完美解决python针对hdfs上传和下载的问题
Jun 05 Python
关于Theano和Tensorflow多GPU使用问题
Jun 19 Python
python实现企业微信定时发送文本消息的示例代码
Nov 24 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
Feb 22 Python
用Python制作灯光秀短视频的思路详解
Apr 13 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
Apache2 httpd.conf 中文版
2006/11/17 PHP
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
简单实现jQuery弹窗效果
2017/10/30 jQuery
JavaScript多态与封装实例分析
2018/07/27 Javascript
如何测量vue应用运行时的性能
2019/06/21 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
Python 的 Socket 编程
2015/03/24 Python
django 发送手机验证码的示例代码
2018/04/25 Python
python实现列表的排序方法分享
2019/07/01 Python
python3 map函数和filter函数详解
2019/08/26 Python
python用quad、dblquad实现一维二维积分的实例详解
2019/11/20 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
2020/03/06 Python
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
工程监理应届生求职信
2013/11/09 职场文书
中学优秀班主任事迹材料
2014/05/01 职场文书
村党支部书记承诺书
2014/05/29 职场文书
政风行风评议工作总结
2014/10/21 职场文书
物价局领导班子四风问题整改措施
2014/10/26 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
万能检讨书
2015/01/27 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
四年级语文教学反思
2016/03/03 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android
CSS实现背景图片全屏铺满自适应的3种方式
2022/07/07 HTML / CSS