博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义模板语言之simple_tag和自定义过滤器
阅读量:5214 次
发布时间:2019-06-14

本文共 1429 字,大约阅读时间需要 4 分钟。

扩展你的模板系统

一般是扩展模板的tag和filter两个功能。可以用来创建你自己的tag和filter功能库。

创建模板库

分为两步:
1. 首先决定由模板库在哪一个注册的app下放置,你可以放在一个已有的app目录下,也可以新建一个专门管理模板库的app,比如python manage.py startapp myTemplateLibrary。推荐后者,因为可以方便将来的重用。
 
2. 在app目录下创建templatetags子目录,并在里面创建两个文件,__init__.py,用来声明这是一个包,另一个是你的tag/filter定义文件。比如myNewLibrary.py,那么在模板文件中可以这样使用:{% load myNewLibrary %}
 
在使用自定义simple_tag的html文件中导入之前创建的 xx.py 文件名
{% load xx %}
自定义simple_tag
在templatetags目录下的py文件中写:
#!/usr/bin/env python# -*- coding:utf-8 -*-from django import templatefrom django.utils.safestring import mark_saferegister = template.Library()@register.simple_tagdef my_simple_time(v1,v2,v3):    return  v1 + v2 + v3

在HTML中写:

{% load xx %}    
Title{% my_simple_time 1 2 3%}

自定义simple_tag的html中不能用于if条件作为判断,so引出了自定义过滤器函数

自定义过滤器函数

(最多俩个参数,html中可以有if条件语句)
自定义的过滤器就是一个带1,2个参数的python函数,一个参数放变量值,一个用来放选项值,比如{
{ var|remove:"bar" }}, var是变量值,"bar"是选项值。
在templatetags目录下的py文件中写:
#!/usr/bin/env python# -*- coding:utf-8 -*-from django import templatefrom django.utils.safestring import mark_saferegister = template.Library()@register.filterdef detail3(value,arg):    allcount, remainder = arg.split(',')    allcount = int(allcount)    remainder = int(remainder)    if value%allcount == remainder:        return True    return False
在HTML中写:
{% load xx %}    
Title{
{ 23|detail4:"4,0" }}{% if 23|detail4:"4,0" %}

123

{% endif %}

 

转载于:https://www.cnblogs.com/luxiaojun/p/5832950.html

你可能感兴趣的文章
BootScrap
查看>>
[大牛翻译系列]Hadoop(16)MapReduce 性能调优:优化数据序列化
查看>>
WEB_点击一百万次
查看>>
CodeForces - 878A Short Program(位运算)
查看>>
路冉的JavaScript学习笔记-2015年1月23日
查看>>
Mysql出现(10061)错误提示的暴力解决办法
查看>>
2018-2019-2 网络对抗技术 20165202 Exp3 免杀原理与实践
查看>>
NPM慢怎么办 - nrm切换资源镜像
查看>>
CoreData 从入门到精通(四)并发操作
查看>>
Swift - UIView的常用属性和常用方法总结
查看>>
Swift - 异步加载各网站的favicon图标,并在单元格中显示
查看>>
Java编程思想总结笔记Chapter 5
查看>>
[LeetCode]662. Maximum Width of Binary Tree判断树的宽度
查看>>
WinForm聊天室
查看>>
Python 从零学起(纯基础) 笔记(一)
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
Java 线程安全问题
查看>>
selenium学习中遇到的问题
查看>>
大数据学习之一——了解简单概念
查看>>