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使用marshal模块序列化实例
Sep 25 Python
使用Python实现一个简单的项目监控
Mar 31 Python
Python方法的延迟加载的示例代码
Dec 18 Python
python基于twisted框架编写简单聊天室
Jan 02 Python
python中set()函数简介及实例解析
Jan 09 Python
Python给图像添加噪声具体操作
Mar 03 Python
详解python中init方法和随机数方法
Mar 13 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
Python中join()函数多种操作代码实例
Jan 13 Python
python实现遍历文件夹图片并重命名
Mar 23 Python
Pytorch数据拼接与拆分操作实现图解
Apr 30 Python
python实现密码验证合格程序的思路详解
Jun 01 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循环输出数据库内容的代码
2008/05/24 PHP
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
php实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
php处理复杂xml数据示例
2016/07/11 PHP
PDO::exec讲解
2019/01/28 PHP
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
chrome浏览器不支持onmouseleave事件的解决技巧
2013/05/31 Javascript
jquery实现图片翻页效果
2013/12/23 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
NodeJS学习笔记之Connect中间件模块(二)
2015/01/27 NodeJs
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
Require.JS中的几种define定义方式示例
2017/06/01 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
Python中asyncore的用法实例
2014/09/29 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
2013/01/31 HTML / CSS
应聘医学检验人员自荐信
2013/09/27 职场文书
自荐信结尾
2013/10/27 职场文书
教师队伍管理制度
2014/01/14 职场文书
春游踏青活动方案
2014/08/14 职场文书
荒岛余生观后感
2015/06/09 职场文书
Python办公自动化之教你如何用Python将任意文件转为PDF格式
2021/06/28 Python
关于vue-router-link选择样式设置
2022/04/30 Vue.js
详解MySQL的内连接和外连接
2023/05/08 MySQL
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS