我在Django应用程序中有一些模板标签,它们具有相同的功能,适用于不同的标签/模板。
Foo标签转到foo_template.html,boo标签转到boo_template.html,例如:
Foo标签:
@register.inclusion_tag('foo_template.html', takes_context=True)
def foo(context, something):
sometng = something
return {'something': sometng}
Boo标签:
@register.inclusion_tag('boo_template.html', takes_context=True)
def boo(context, something):
sometng = something
return {'something': sometng}
如何让我的代码DRYer?在这种情况下,有更好的方法来注册标签吗?
答案 0 :(得分:0)
请记住,装饰器只是包装函数的语法糖,它将原始函数作为参数。所以你可以保留你的上下文函数未修饰,然后定义两个包装器:
def common(context, something):
sometng = something
return {'something': sometng}
register.inclusion_tag('foo_template.html', takes_context=True, name='foo')(common)
register.inclusion_tag('boo_template.html', takes_context=True, name='bar')(common)