Django1.7.2+Bootstrap3.3.0 整合十:自定义 tag 研究

diango 创建自定义 tag 时有些要求,大概的几个步骤如下:

1),在 app/templatetags 中创建自定义标签脚本

2),创建模版文件(非必须)

3),在视图中加载自定义标签,并使用


1、简单标签

这类标签只是简单的输出某一个结果,步骤如下:

第一步、在 app/templatetags 中创建文件 tag_demo.py,代码如下:

from django import template
register = template.Library()

@register.simple_tag
def total_posts():
    return 'total:101 个'

注:上面两行是 diango 规定必须的代码,详细请参见官方 api。


目录结构大概是这样的:


第二步,在视图中引用

在需要使用的图片中加入如下行代码:

{% load tag_demo %}
{% total_posts %}
第一行是加载自定义标签脚本,第二行是使用标签脚本中的自定义标签

注:一个算定义标签脚本中,可以包括多个自定义标签

2、带参数标签

修改tag_demo.py,加入如下代码:

@register.simple_tag
def total_posts2(v):
    return 'total: '+ v +' 个'

修改视图文件,加载并引用:

{% load tag_demo %}
{% total_posts2 "1111" %}

如果是两个参数形如下面示例:

@register.simple_tag
def total_posts2(v, v2):
    return 'total: '+ v + ',' + v2 +' 个'

...............
{% load tag_demo %}
{% total_posts2 "1111" "222" %}

3、内含标签

内含标签可以被其他模板进行渲染,然后将渲染结果输出。继续上一示例进行如下操作:

修改标签脚本,加入如下代码:

@register.inclusion_tag('total_posts3_part.html')
def total_posts3():
    a = ['first','second','third']
    return {'choices': a}

然后在“templates”目录中新建文件“total_posts3_part.html”,代码如下:

<ul>
{% for choice in choices %}
    <li> {{ choice }} </li>
{% endfor %}
</ul>

最后在需要引用的视图中加入如下两行代码:

{% load tag_demo %}
{% total_posts3 %}

注:当需要传入参数时,与上一示例相似。

4、分配标签

分配标签类似于简单标签,但并不会输出结果,可以使用 as 关键字将结果赋给一个参数。

修改 tag_demo.py 加入如下代码:

@register.assignment_tag
def total_posts4(total):
    return 'total:' + total + ' 个'

在需要使用的视图中加入如何代码:

{% load tag_demo %}
{% total_posts4 "777" as str %}
{{ str }}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值