【发布时间】:2018-10-13 11:12:28
【问题描述】:
在 Django 中,有没有办法让自定义模板标签访问视图传递的当前模板的变量?
我的第一个想法是做一个参数,用户可以手动放置模板变量,但如果我的自定义模板标签可以访问变量本身,那就更好了!
为了说明,我想去掉参数templatevar
@register.simple_tag
def sampletag(templatevar):
return templatevar
【问题讨论】:
-
从可测试性/可维护性/稳健性 POV 的角度来看,显式传递变量比依赖上下文中可能设置或不设置的内容要好。这当然不是硬性规定——有时让你的模板标签占据整个上下文(cf Daniel Roseman 的回答)是最好的解决方案,但你绝对不能依赖在上下文中设置的变量,或者 - 如果是的话 - 是什么你所期望的,所以你必须编写代码来优雅地处理这些情况。