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 ...
随机推荐
- liunx环境,摄像头无法识别,解决方案
今天无语了,linux14.04系统下,使用罗技c270摄像头.发现插上没有反应,系统版本: lenovo-myc@lenovomyc-Lenovo-Product:~/Downloads$ unam ...
- myeclipse.ini
myeclipse10 32位 我的配置 #utf8 (do not remove) #utf8 (do not remove) -startup ../Common/plugins/org.ecli ...
- cmake的一个编译报错
在一台新搭建的服务器上执行cmake的时候,报了如下错误: $ cmake ./ -- The C compiler identification is unknown -- The CXX comp ...
- ubuntu16搭建docker私库
测试环境如下: 一.docker的安装 安装方法请查看这里的 安装教程 二.设置普通用户 1. centos的设置方法 $ sudo gpasswd -a docker ${USER} 2. ubun ...
- 30-盐水(分段dfs)
链接:https://www.nowcoder.com/acm/contest/94/K来源:牛客网 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C++ 131072K,其他语言2621 ...
- cmake利用toolchain.cmake生成makefile之后,make生成静态库失败问题
问题描述 利用toolchian.cmake设置好编译器后,利用make指令生成静态库,出现以下问题 Error running link command: No such file or direc ...
- 一个ButtonDemo的实现过程。
来自JDK API 1.6.0: Try this: Click the Launch button to run the Button Demo using Java™ Web Start (dow ...
- 什么是MTU,如何检测和设置路由器MTU值
最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位).最大传输单元这个参数通常与通信接口有关(网络接口卡.串口 ...
- STM32 CAN控制器简介
1.STM32自带了基本扩展CAN外设,又称bxCAN,bxCAN的特点如下: 2.模式:分为工作模式.测试模式.调试模式 睡眠模式主要用于降低功耗! 在静默模式下的工作原理 由图可知,它只会接受来自 ...
- 国内物联网平台(6):庆科云FogCloud
国内物联网平台(6)——庆科云FogCloud 马智 平台定位 FogCloud 快速接入智能硬件 FogCloud为开发者提供便捷的智能硬件接入服务,真正实现敏捷开发,快速迭代. FogCloud提 ...