【问题标题】:How to get template variable from within a custom template tag如何从自定义模板标签中获取模板变量
【发布时间】:2018-10-13 11:12:28
【问题描述】:

在 Django 中,有没有办法让自定义模板标签访问视图传递的当前模板的变量?

我的第一个想法是做一个参数,用户可以手动放置模板变量,但如果我的自定义模板标签可以访问变量本身,那就更好了!

为了说明,我想去掉参数templatevar

@register.simple_tag
def sampletag(templatevar):
    return templatevar

【问题讨论】:

  • 从可测试性/可维护性/稳健性 POV 的角度来看,显式传递变量比依赖上下文中可能设置或不设置的内容要好。这当然不是硬性规定——有时让你的模板标签占据整个上下文(cf Daniel Roseman 的回答)是最好的解决方案,但你绝对不能依赖在上下文中设置的变量,或者 - 如果是的话 - 是什么你所期望的,所以你必须编写代码来优雅地处理这些情况。

标签: python django templates


【解决方案1】:

装饰器可以使用takes_context参数。

@register.simple_tag(takes_context=True)
def sampletag(context):
    return context['templatevar']

请参阅template tags documentation

【讨论】:

    猜你喜欢
    • 2012-03-25
    • 2014-03-04
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 2023-04-01
    相关资源
    最近更新 更多