Django-Cms学习笔记之安装篇——Django-classy-tags简介

1 简介

Django-Classy-Tags是一个定义优雅模板标签的应用,扩展Django自带的模板标签定义系统。

2 一个简单示例:

这是一个基本的没有参数的示例:

from classytags.core import Tag
from django import template

register = template.Library()

class HelloWorld(Tag):
        name = 'hello_world'
        def render_tag(self,context):
               return 'hello world'

register.tag(HelloWorld)

现在我们来解释这个示例:

(1)要定义一个模板标签变是子类化classytags.core.Tag。在这个子类必须给出name属性和render_tag(self,context)方法,name指出了标签名称。render_tag()方法在渲染模板时使用,这个方法总是返回一个字符串。

(2)如常规django自定义模板标签一样,注册这个模板标签。

3 一个带选项的模板标签:

from classytags.core import Tag,Options
from classytags,arguments import Argument

from django import template

register = template.Library()

class Hello(Tag):
   name = 'hello'
   options = Options(
                             Argument('name'),
                             'as',
                             Argument('varname',required=false,resolave=False))
   def render_tag(self,context,name,varname):
          output = "hello %s' %name
          if varname:
                context[varname] = output
                return ''
          else:
                return output  

register.tag(hello)

在模板中,我们可能使用{% hello 'world' %}使用这个标签,它会输出‘hello world';如果在模板中使用了{% hello 'world' as 'myvar' %}将会什么也不输出,但在模板中使用{{ myvar }}时,会输出‘hello world'


4 定义一个块模板标签

from classytags.core import Tag,Options
from classtags.arguments import Argument
from django import template

register = template.Library()

class With(Tag):
    name = 'with'
    options = Options(
         Argument('variable'),
         'as',
         Argument('varname',resolve=False),
         blocks=[('endwith','nodelist')]
     )

     def render_tag(self,context,variable,varname,nodelist):
       context.push()
       context[varname] = variable
       output = nodelist.render(context)
       context.pop()
       return output
register.tag(with)





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值