Django 05 自定义过滤器、自定义标签
Django 05 自定义过滤器、自定义标签
一、自定义过滤器
#1、在项目目录下创建一个python package包 取名为common(这个名字可以自定义)
#2、在common目录下创建一个templatetags包
#3、在项目settings里面installed_apps里面添加common
#4、在templatetags目录下创建一个py文件,名字自定义
模板过滤器的分析

#5、注册自定义过滤器
from django import template #导入template register = template.Library() #实例化template #过滤器cut的功能
@register.filter #注册方法二,使用装饰器的方法,注册名就是函数名
def mycut(value,arg):
return value.replace(arg,'') register.filter('mycut',mycut) #注册注册方法一,前面一个是函数名,后面一个是注册名 #小写化的功能
@register.filter #方法2
def lower1(value):
return value.lower() register.filter('lower1',lower1) #方法2
#6、导入
{% load common_extras %} {# 需要先导入这个模块才能使用自定义过滤器 #} <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>自定义过滤器及标签</title>
</head>
<body>
过滤器:{{ test|cut:'i' }} <br>
自定义过滤器:{{ test|mycut:'i' }} <br> 过滤器:{{ test|lower }} <br>
自定义过滤器: {{ test|lower1 }} <br>
</body>
</html>
二、自定义标签
简单标签的注册
from django import template #导入template register = template.Library() #实例化template import datetime
@register.simple_tag #注册
def current_time1(): #编写自定义标签
return datetime.datetime.now().strftime('%Y年%m月%d日 %H:%M:%S') #后面的strftime是自定义格式的意思 @register.simple_tag
def current_time2(format): #这种情况就可以在html里面赋值
return datetime.datetime.now().strftime(format) @register.simple_tag(takes_context=True) #这种方法就可以在视图函数里面的context里面赋值
def current_time3(context):
format = context.get('format')
return datetime.datetime.now().strftime(format)
包含标签的注册
#包含标签的功能是可以通过渲染另外一个模板来显示一些数据
#例如很多地方都可能会用到下面这几行代码,除了choices这个变量不一样之外,其他的都是格式都一样的情况下,那么可以把这部分代码封装在一个包含标签里面
<ul>
{% for i in choices %}
<li>{{ i }}</li>
{% endor %}
</ul>
#1、创建一个固定格式的html文件
#2、为这个文件创建一个标签show_tags.html
<ul>
{% for foo in choice %}
<li>{{ foo }}</li>
{% endfor %} </ul>
#包含标签
@register.inclusion_tag('book/show_tags.html') #利用装饰器注册,页面来自show_tags.html
def show_results1(): #方式一,直接传
ls = ['x','y','z']
return {'choice':ls} #固定格式中的choice改为ls @register.inclusion_tag('book/show_tags.html')
def show_results2(ls): #方式二:模板里面传变量
return {'choice':ls} @register.inclusion_tag('book/show_tags.html',takes_context=True) #必须要加上takes_context=True
def show_results3(context): #方式三:上下文中获取
ls = context.get('ls')
return {'choice':ls}
Django 05 自定义过滤器、自定义标签的更多相关文章
- django自定义过滤器和标签
1.自定义过滤器和标签的流程: 1.在某个app下创建一个名为templatetags(必需,且包名不可变)的包.假设我们在名为app01的app下创建了一个templatetags的包,并在该包下创 ...
- Django——5 自定义过滤器及标签
Django 自定义过滤器 自定义标签 简单标签 包含标签 自定义过滤器 自定义过滤器就是一个带有一个或两个参数的Python 函数: - (输入的)变量的值 —— 不一定是字符串形式. - 参数的值 ...
- Django入门--自定义过滤器与标签
---恢复内容开始--- 为了让Django找到自定义的模板过滤器和模板标签,需要进行文件路径配置,配置方式分为APP目录下配置和项目路径下配置两种方式: 1.在APP目录下配置:针对某个应用特定的自 ...
- 小白学习django第三站-自定义过滤器及标签
要使用自定义过滤器和标签,首先要设置好目录结构 现在项目目录下建立common的python包 再将common加入到setting.py中的INSTALLED_APP列表中 在common创建目录t ...
- Django学习——Django settings 源码、模板语法之传值、模板语法之获取值、模板语法之过滤器、模板语法之标签、自定义过滤器、标签、inclusion_tag、模板的导入、模板的继承
Django settings 源码 """ 1.django其实有两个配置文件 一个是暴露给用户可以自定义的配置文件 项目根目录下的settings.py 一个是项目默 ...
- 一、变量.二、过滤器(filter).三、标签(tag).四、条件分支tag.五、迭代器tag.六、自定义过滤器与标签.七、全系统过滤器(了解)
一.变量 ''' 1.视图函数可以通过两种方式将变量传递给模板页面 -- render(request, 'test_page.html', {'变量key1': '变量值1', ..., '变量ke ...
- Web框架之Django_04 模板层了解(过滤器、标签、自定义过滤器、标签、inclusion_tag、模板的继承与导入)
摘要: 模版层(模板语法) 模板语法 过滤器 标签 自定义过滤器.标签 inclusion_tag 模板的继承 模板的导入 一.模板语法: 常用语法:{{ }} 变量相关{% %} ...
- 自定义过滤器和标签 & 静态文件相关
自定义过滤器和标签 1.在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 2.在app中创建templatetags模块(模块名 ...
- Django自定义过滤器及标签
一.自定义过滤器 1.自定义过滤器文件存放位置 在APP应用下创建名为templatetags(该文件夹名固定)的文件包(包含__init__.py文件) 注意APP必须在setting中注册 即在s ...
- Django之模板层-自定义过滤器以及标签
自定义标签与过滤器 在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 在app中创建templatetags模块(模块名只能是t ...
随机推荐
- Android CTS(frome google)
Compatibility Test Suite How does the CTS work? The Compatibility Test Suite (CTS) is a free, commer ...
- EF CODEFIRST WITH ORACLE
摸索了半天,运行通过了,但是还是有一点坑的,对于初次使用的人来说,可能会遇到几个问题 首先安装两个dll 如果你已经下载好了dll Oracle.ManagedDataAccess.dll Oracl ...
- zookeeper 安装配置注意事项
zoo.cfg 1.server.1/2/3 有几台配置几个 2.配置好hosts映射之后可以用node1替代IP地址 3.dataLogDir 下面配置的logs 的目录一定要创建 4.dat ...
- executeUpdate,executeQuery,executeBatch 的区别
executeQuery : 用于实现单个结果集,例如: Select 一般使用executeQuery 就是来实现单个结果集的工具 executeUpdate 用于执行 INSERT.UPDATE ...
- java中一些常用的英语
abstract (关键字 ) 抽象 ['.bstr.kt] access vt.访问,存取 ['.kses]'(n.入口,使用权) algorithm n.算法 ['.lg.rie ...
- OpenNi安装示例
1.下载OpenNi https://structure.io/openni 解压,点击运行 选择安装目录,默认即可 安装过程中有弹框,选择 安装 点击 完成 在相应的安装目录下即可找到
- Zbar 大图像分析
博客转载自:https://blog.csdn.net/sunflower_boy/article/details/50429252 为了减少处理时间,可以设定更大的扫描间距,减少不必要的解码类型,去 ...
- jQuery 事件 - trigger() 方法
<html> <head> <script type="text/javascript" src="/jquery/jquery.js&qu ...
- C和C++中文件读写的区别
C中采用的主要是文件指针的办法,C++中对文件的操作主要运用了“文件流”(即非标准的输入输出)的思想 eg1": #include<stdio.h> //... FILE* fp ...
- Python--详解TKinter类库
为了学习python3.5的tkinter,于是我去官网找了找相关部件的一些文档,读起来有点绕口,觉得还是自己来实践实践,看看视频感觉用处会更大,然后就有了下面的一部分常用的总结, 查看tkinter ...