django 自定模板标签的注册
首先注册方法一般都是先实例化一个template.Library。如:
from django import template register = template.Library()
1.注册自定义过滤器方法
register.filter('A',b)
filter()方法中的2个参数分别:A过滤器的名称(一个字串)和 b过滤器函数本身。
2.注册自定义模板标签方法
register.tag('A',b)
tag()方法需要2个参数:模板标签的名字A和编译的函数b。
3.注册简单标签的方法如:if ,for ,ifequal等等
register.simple_tag(A)
该辅助函数传递的函数只有(单个)参数,参数两边的引号(如果有的话)已被截掉了所以只可能接收到一个普通的Unicode字符串。
4.注册包含标签的方法
register.inclusion_tag('A.html')(B)
inclusion_tag()方法需要2个参数:模板所在的文件A和编译的函数B。
有时候,包含标签需要访问父模板的context.此时可用到takes_context选项,即设置takes_context=True,并且该标签不需要参数,且下面的Python函数会带一个参数:就是当这个标签被调用时的模板context.
@register.inclusion_tag('A.html',takes_context=True)
def jump_link(context):#此处参数必须是context
return {
'link':context['home_link'],
'title':context['home_title'],
#此处有包含指向主页的变量,即取home_link和home_title中的变量link和title的值
}
然后创建A.html,里面可能包含下面内容:
XXXXX<a href="{{ link }}">{{ title }}</a>xxxxxx 该处的link和title分别取自home_link和home_title中的内容。
如果要调用该参数,可以直接加载它的库,然后不带参数地调用它{{ jump_link }}
5.编写自定义模板加载器
load_template_source(template_name,template_dirs=None)
template_name是加载模板的名称,类似于loader.get_template()或者loader.select_template()
template_dirs是一个可选的代替TEMPLATE_DIRS的搜索目录列表
如果加载器能够成功的加载一个模板,此时会返回一个元组(template_source,template_path),template_source:模板引擎编译的模板字符串、template_path:被加载的模板路径。若加载器加载模板失败,那么会触发django.template.TemplateDoesNotExist异常。
注:在上面代码中看到@xxxx,这样的写法,改语法在python 2.4及以上版本中成立,即:
@register.tag(name="A") #A过滤器的名称(一个字串)
def B(parser.token):
#.....
或者直接写成:
@register.tag
def B(parser,token):
#......
Django此处会使用函数名称B来作为标签名称
此处只举一例,其他写法类似。另如有不同看法,欢迎来讨论。
django 自定模板标签的注册的更多相关文章
- Django项目中模板标签及模板的继承与引用【网站中快速布置广告】
Django项目中模板标签及模板的继承与引用 常见模板标签 {% static %} {% for x in range(x) %}{% endfor %} 循环的序号{% forloop %} 循环 ...
- Django内置模板标签
Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cy ...
- 第三章:模版层 - 2:Django内置模板标签
Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cy ...
- Django常用的模板标签
django 目前了解的各个文件的作用: manage.py: 运行服务 urls: 路由 views: 处理数据 传递给 html模板 html文件: 通过 {{变量名}}接收变量 通过 模板标 ...
- Django 内置模板标签和过滤器
一.内置模板标签 语法:{% %} autoescape : 是否转义,on或off作为参数,并确定自动转义是否在块内有效.该块以endautoescape结束 {% autoescape on % ...
- python3之Django内置模板标签和过滤器
一.模板标签 内置标签: 1.autoescape 控制当前的自动转义行为,此标记采用on或者off作为参数,并确定自动转义是否在块内有效.该块以endautoescape结束标签关闭. views: ...
- Django学习之模板标签和变量
safe过滤器和{% autoescape %}标签 首先看这样一个例子: views.py中: c = '<h3>更上一层楼</h3>' render(request,'te ...
- django 学习-4 模板标签
1.第一个标签是 if 标签 vim learn/home.html <!DOCTYPE html><html><head> <title&g ...
- Django extend(继承)模板标签
在 views.py 上修改 ... def ordered(req): return render(req, "ordered.html") def shopping_car(r ...
随机推荐
- Jackson2.1.4 序列化格式化时间
public class User { private int id; private Date birthday; private double money; private String name ...
- eclipse安装中文补丁包
第一步:打开http://www.eclipse.org/babel/ 第二步:找到downloads. 第三步:点击Oxygen. 第四步:找到简体中文的zip插件并兵下载. 第五步:解压. 第六步 ...
- 一、drupal 安装汉化
下载 Drupal 7: 下载语言包文件:到 http://localize.drupal.org/translate/languages/zh-hans 页面下载对应版本的语言包(.po文件) 安装 ...
- redis调优
1.先把持久化数据备份一份,然后使用rdb分析工具分析一下大的键值2.然后DBA删除一部分不用的3.然后再配置最大内存 千万不要没清理数据就直接把内存限制较小 那样会触发redis对内存达到限制的处理 ...
- 轻量级ORM框架Dapper应用一:Dapper安装
一.Dapper简介 Dapper是一款轻量级ORM框架,为解决网站访问流量极高而产生的性能问题而构造,主要通过执行TSQL表达式而实现数据库的CQRS. 如果你在项目中遇到性能访问问题,选择Dapp ...
- js学习笔记16----父节点的操作
1.元素.parentNode : 只读属性,获取当前元素的父节点. 2.元素.offsetParent : 只读属性,获取离当前元素最近的一个有定位属性(position为relative或者abs ...
- selenium定位方法(java实例)(二)
从下图中可以看到selenium有三类定位元素的方法,一种是直接通过属性.标签以及链接来定位,一种是XPath方式,最后一种是CSS方式. 下表列举了元素定位的例子 selenium之页面元素定位方法 ...
- SpringMVC--拦截器的使用
SpringMVC的请求如下面这种图所示: 可以看出所有的请求都要通过Dispatherservlet来接收,然后通过Handlermapping来决定使用哪个控制器,再根据ViewResolver ...
- 第三百零五节,Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性
Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性 Views(视图函数)逻辑处理,最终是围绕着两个对象实现的 http请求中产生两个核心对象: http请求:HttpRe ...
- MySql csv文件导入导出
一.导出到csv(本地导出) 通过mysql客户端shell连接到服务器,选择使用的数据库,输入sql代码: select * from test_info into outfile '/tmp/te ...