Django框架基础知识05-自定义模板标签与过滤器
根据一定规则,自己定义出符合需求功能的.用在任何你有需求的地方,因为内置的满足不了我们的需求,不同的东西有不同的定义规则
目前最最重要的就是HOW
一 文件路径配置:
templates
存放自定义
某个app特有的自定义标签:存放模板的目录:在app目录下创建一个python package,在其中新建templatetags标签及过滤器的目录
目录结构:
注意:templatetags这个目录名字是固定的,而里面的模块名是自定义的.
模板过滤器的分析:
{{ var|foo:"bar" }} 变量,过滤器,参数
自定义过滤器就是一个带有一个或两个参数的Python 函数:
- (输入的)变量的值 —— 不一定是字符串形式。
- 参数的值 —— 可以有一个初始值,或者完全不要这个参数。
自定义过滤器的例子:
def to_male(value,arg): #自定义返回判断函数,用字典实现的例子
map = {
'zh':('女','男'),
'en':('female','male')
}
return map[arg][value]
掌握自定义的规则!!!
注册自定义过滤器:
django.template.Library.filter()
1.Library.filter()方法需要两个参数:
a. name:过滤器的名称(一个字符串对象)
b. filter_func:编译的函数 – 一个Python函数(不要把函数名写成字符串)
2.可以把register.filter()用作装饰器;在register.filter(name=''),可以放参数.
3.没有声明 name 参数,Django将使用函数名作为过滤器的名字。
使用自定义过滤器:
在模板中使用自定义的过滤器
需要使用{% load %}标签将我们的自定义模块加载进来
{% load %} 声明将会载入给定模块名中的标签/过滤器
自定义标签:
简单标签django.template.Library.simple_tag()
包含标签django.template.Library.inclusion_tag()
tag()方法有两个参数:
模板标记的名称 - 字符串。 如果省略,将使用编译函数的名称。
编译的函数 – 一个Python函数(不要把函数名写成字符串)
与过滤器注册一样,也可以将其用作装饰器。
自定义简单标签的例子:
代码布局(自定义的代码,放在哪里)
-app目录下,templatetags文件夹.
在simple_tags的参数中设置takes_context=True,就能得到views中的context传参.在自定义标签中的参数第一个一定要写context.例:
def func(context,format_str):
...
包含标签,通过渲染另外一个模板
自定义包含标签的例子:
例子:
@register.inclusion_tag('teacher/show_li_as_ul.html')
def show_list_as_ul(value,style):
return {'ls':value,'style':style}
<td>{% show_list_as_ul stu.course 'link' %}</td>
装饰器中传入的是我们显示数据的模板文件路径
context中以下划线开头的健,属性,方法用点号在模板中拿不到
例:arg = {
'_meta' = 'adafdakfl'
}
{{arg._meta}}取不到
想要取值就先把arg传到变量中,在变量里取出_meta,再用这个新变量取值.
函数返回的是个字典对象.
代码布局(自定义的代码,放在哪里)
某个app特有的 -app 目录下,templatetags 文件夹 -再到 templatetags 文件夹下创建python模块(py文件)
定义复用 -创建一个新的app,将他们定义在新的app中,在INSTALL_APPS 注册,然后就可以应用
1.自定义模板过滤器 -模板过滤器是什么 -函数,一个或两个参数 - 第一个参数,是传递进来的模板变量 - 第二个参数,普通的参数,也可以是默认,也可以不要 其实就是个函数,没有什么不同 - 定义非常简单,就是写一个函数
-注册
1.
通过django.template.Library 它的实例的 filter 方法
filter 有两个参数:
- name 过滤器的名称,是个字符串,可以不写,默认
使用方法名作为过滤器的名称
- filter_func 定义的过滤器的函数
2.通过装饰器
-模板中使用
- 先要load一下,通过python模块名
2.自定义模板标签 - 简单标签 django.template.Library.simple_tag() - 创建 普通的python函数 - 注册 1. 2.装饰器 - 引用上下文变量(views中render传递到模板中的那个context) 只需要在simple_tag 中,设置参数take_context=True 自定义的标签函数的第一个参数一定是 context
- 包含标签
最新文章
- CH Round #52 还教室[线段树 方差]
- Json与常见的类型之间的转换
- jQuery 鼠标拖拽移动窗口
- OC-block
- javascript的基本语法、数据结构
- zend studio-字体大小设置
- Mac OS X 开启SSH服务
- cocos2dx使用tolua关于字符串处理的一个问题
- Python网络数据采集7-单元测试与Selenium自动化测试
- C语言可变参实现参数累加返回
- Scala编程入门---数组操作之Array.ArrayBuffer以及遍历数组
- mysql判断条件不存在插入存在更新某字段
- 【CF865D】Buy Low Sell High(贪心)
- 华为手机浏览器 onclick失灵的问题
- js判断手指的上滑,下滑,左滑,右滑,事件监听
- OpenStack平台虚拟机实例在线迁移失败问题
- 获取网站资源 getResourceAsStream
- 移动开发iOS&;Android对比学习--异步处理
- 使用RMAN增量备份处理Dataguard因归档丢失造成的gap
- HAWQ取代传统数仓实践(八)——维度表技术之角色扮演维度
热门文章
- Windows、Linux、Android常用软件分享
- Android课程设计第四天ListView运用
- PWA之push服务
- Could not open logfile"; occurred when run ";datapatch -verbose";
- jQuery attr() 源码解读
- Problem E: 穷游中国在统题 优先队列 + 模拟
- DoTween学习笔记
- Web API DataContract DataMember Serializable简单解释
- html到计时特效(直接代码)
- Java GC机制简要总结(Java垃圾回收的基本工作原理)