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 ...
随机推荐
- Java 对密码MD5
MD5,即"Message-Digest Algorithm 5(信息-摘要算法)": MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算 ...
- 导入android studio项目,编译失败
使用android studio 打开studio 工程,编译的时候报错: “ INFO - .project.GradleProjectResolver - Gradle project resol ...
- 【262】pscp命令 实现windows与linux互传文件
首先将pscp.exe文件放在某个文件夹中 新建*.bat文件 w-wx.bat代码 @echo off pscp.exe -pw l*****h D:\Windows-Linux\Data\* oc ...
- filter(函数,可以迭代的对象)
#!/usr/bin/env python #filter(函数,可以迭代的对象) def f1(x): if x > 22: return True else: return False re ...
- maven安装第三方jar包到本地仓库
添加项目依赖的时候,有些jar下载不下来,只有手动下载或安装到本地仓库了 首先下载所需要的jar,放到指定的文件夹 然后执行如下命令: mvn install:install-file -Dfile= ...
- 使用zookeeper实现服务路由和负载均衡
三个类: ServiceAProvider ServiceBProvider ServiceConsumer 其中 ServiceAProvider提供的服务名service-A,指向IP为192.1 ...
- 数据结构 hbb(汉堡包)
数据结构 hbb(汉堡包) 问题描述 汉堡包有收集汉犇犇的癖好,它喜欢把汉犇犇一个叠一个的放置. 因为它有强迫症,所以每当它想放一个新的汉犇犇进去的时候并不一定想直接叠在最上面,简单的说,当他想放第 ...
- Socket编程--并发server
Socket地址复用 int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); int ...
- POJ 2836 Rectangular Covering (状压DP)
题意:平面上有 n (2 ≤ n ≤ 15) 个点,现用平行于坐标轴的矩形去覆盖所有点,每个矩形至少盖两个点,矩形面积不可为0,求这些矩形的最小面积. 析:先预处理所有的矩形,然后dp[s] 表示 状 ...
- 《Maven实战》笔记-5-pom聚合和继承
一.聚合 假设有两个模块:account-email和account-persist: 能够使用一条命令就能构建上述两个模块,需要创建一个额外的模块:account-aggregator: 通过acc ...