django inclusion_tag

一种比较普遍的tag类型是只是渲染其它模块显示下内容,这样的类型叫做Inclusion Tag。
例如,实现以下tag:
{% books_for_author author %}
渲染结果为:
< ul>
< li>The Cat In The Hat</ li>
< li>Hop On Pop</ li>
< li>Green Eggs And Ham</ li>
</ ul>
列出某个作者所有的书。
  • 定义函数
def books_for_author(author):
    books = Book.objects. filter(authors__id=author. id)
     return {'books': books}
  • 创建另一个模板文件book_snippet.html
< ul>
{% for book in books %}
< li>{{ book. title }}</ li>
{% endfor %}
</ ul>
  • 注册tag
register.inclusion_tag('book_snippet.html')(books_for_author)
 
有些你的模板可以使用父模板的context内容,Django提供一个takes_context参数来实现,
使用之后,tag不能再带参数,
@register.inclusion_tag('link.html', takes_context= True)
def jump_link(context):
     return {
        'link': context['home_link'],
        'title': context['home_title'],
}
模板文件link.html为
Jump directly to <a href="{{ link }}">{{ title }}</a>.
使用方法:
{% jump_link %}
 
转自: http://www.cnblogs.com/btchenguang/archive/2012/09/05/2672364.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值