Django 学习第五天——自定义过滤器及标签
代码布局:(自定义的代码放在哪?)
1、创建某个 app 特有的:
在 app 目录下,创建 templatetags python包(文件夹);
再到 templatetags 文件夹下创建python模块(文件)
注意:templatetags 这个名字固定的,里面的模块名是自定义的
2、创建复用(公用)的:
创建一个新的app,将他们定义在新的app中,在主目录的setting.py文件里的 INSTALL_APPS 注册,然后就可以应用

一、自定义模板过滤器
创建:
模板过滤器就是一个函数:
一般有一个或或两个参数
第一个参数,一般是传递进来的模板变量;
第二个参数,普通的参数,也可以十默认,也可以不要;
定义就是写一个函数
注册:
1、通过 django.template.Library 它的实例(一定要是:register)的 filter 方法
filter 有两个参数:
1)、name:过滤器的名称,是个字符串,可以不写,默认使用方法名作为过滤器的名称;
2)、filter_func: 定义的过滤器的函数(函数对象);注意不要把函数名写成字符串
register.filter('别名',自定义的函数名)
2、通过装饰器:
@register.filter #这里可以传入 @register.filter(name='newname') 取别名

使用:
需要使用{% load %}标签将我们的自定义模块加载进来
{% load %} 声明将会载入给定模块名中的标签/过滤器
二、自定义模板标签:
自定义简单标签:
创建:
就是一个普通的python函数
注册:
1、通过 django.template.Library 它的实例(一定要是:register)的 simple_tag 方法
simple_tag 有两个参数:
1)、name:过滤器的名称,是个字符串,可以不写,默认使用方法名作为过滤器的名称;
2)、filter_func: 定义的过滤器的函数,(函数对象)
register.simple_tag(name='别名',自定义的函数名)
2、通过装饰器:
@register.simple_tag #这里也可以传入 @register.simple_tag(name='newname') 取别名
使用:
需要使用{% load %}标签将我们的自定义模块加载进来
{% load %} 声明将会载入给定模块名中的标签/过滤器
引用上下文变量:(views 中render传递到模板中的那个 context)
只需要在 simple_tag 中设置 take_context=True
自定义标签函数的第一个参数一定是 context

包含标签:(inclusion tags)
通过渲染另一个模板来展示数据
定义:
定义一个函数,接收调用时传递的模板变量
定义一个模板,供这个函数使用
注册:
1、通过 django.template.Library 它的实例(一定要是:register)的 inclusion_tag 方法
inclusion_tag 有两个参数:
1)、name:过滤器的名称,是个字符串,可以不写,默认使用方法名作为过滤器的名称;
2)、filter_func: 定义的过滤器的函数,(函数对象)
register.inclusion_tag(自定义的函数名) #传入定义的那个供函数使用的模板
2、通过装饰器:
@register.inclusion_tag('自定义的那个模板文件')
使用:
需要使用{% load %}标签将我们的自定义模块加载进来
{% load %} 声明将会载入给定模块名中的标签/过滤器
引用上下文变量:(views 中render传递到模板中的那个 context)
只需要在 inclusion_tag 中设置 take_context=True
自定义标签函数的第一个参数一定是 context
Django 学习第五天——自定义过滤器及标签的更多相关文章
- 小白学习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 ...
- django自定义过滤器和标签
1.自定义过滤器和标签的流程: 1.在某个app下创建一个名为templatetags(必需,且包名不可变)的包.假设我们在名为app01的app下创建了一个templatetags的包,并在该包下创 ...
- Django入门--自定义过滤器与标签
---恢复内容开始--- 为了让Django找到自定义的模板过滤器和模板标签,需要进行文件路径配置,配置方式分为APP目录下配置和项目路径下配置两种方式: 1.在APP目录下配置:针对某个应用特定的自 ...
- 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 ...
随机推荐
- UserNotifications ios10 通知使用
通知在ios10 中推荐使用 导入 import UserNotifications 头文件 if #available(iOS 10.0, *) { UNUserNotificationCent ...
- mvc 模式和mtc 模式的区别
首先说说Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一起,模型负责业务对象与数据库的映射( ...
- Hive shell 基本命令
首先连接 hive shell 直接输入 hive启动, 使用--开头的字符串来表示注释 hive>quit; --退出hive hive> exit; --exit会影响之前的使用,所以 ...
- cordova AndroidStudio3.0 升级报错问题
http://blog.csdn.net/z_Xiaozuo/article/details/78962701 ionic3 打包 安卓项目遇到的问题,当时比较冲忙升级了下android studio ...
- bzoj 2721
题解:首先推一发式子(见csdn https://blog.csdn.net/lleozhang/article/details/83415995) 因为x是整数,所以x的数量显然为能使取得整数的t的 ...
- win+python+selenium实现窗口和tab切换
这篇总结主要是关于两方面的需求:其一,在浏览器不同tab标签页之间按时间切换(同事用来不停刷新grid crontol 监控页面):其二,实现开启多个窗口,并将窗口缩放到一定范围,并齐占满整个桌面,按 ...
- 无废话-API-01
说明 我的开发环境:VS2013 浏览器:谷歌浏览器(Google Chrome) 1创建项目 1.1添加一个 应用程序"ASP.NET MVC 4 Web 应用程序" 1.2选 ...
- 目标检测算法之YOLOv3
参考地址:https://blog.csdn.net/leviopku/article/details/82660381 YOLO v3结构图 DBL:卷积+BN+leaky relu,是v3的最小组 ...
- C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设。抄下了记忆更深刻
C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设.抄下了记忆更深刻 本书面向的读者 写作本书时,我面临的一个挑战是如何持续吸引高级开发人员眼球的同时,不因使用assembly ...
- 【第一部分】10Leetcode刷题
一.删除链表的倒数第N个节点 题目:19. Remove Nth Node From End of List 分析:典型的利用双指针法解题.首先让指针first指向头节点,然后让其向后移动n步,接着让 ...