【问题标题】:Turbogears2: analog of django context processorsTurbogears2:django 上下文处理器的模拟
【发布时间】:2011-12-16 08:56:43
【问题描述】:

turbogears2 中是否有任何 django 上下文处理器的模拟? 在 tg1 中是标准变量,但在 tg2 中不再是。

解释: 我需要有一些模板标签,在每个页面上都可用,而在每个控制器中没有明显的声明。

【问题讨论】:

    标签: python django turbogears genshi


    【解决方案1】:

    我不确定这是否是最好的方式,但您可以将以下内容添加到 app_globals.Global:

    from genshi.core import Markup
    self.foo = lambda: Markup("<div>my content here!!!</div>")
    

    然后在您的模板中:

    ${g.foo()}
    

    或者您可以通过 ajax 请求来实现...

    【讨论】:

      【解决方案2】:

      您有三种可能的解决方案来实现这一目标。

      首先您可以使用tg.tmpl_context,它在每个模板中都可以使用tmpl_context。 您可以在BaseController.__call__ 中填充变量,以便它们随处可用。

      另一种方法是在app_cfg.py 中注册base_config.variable_provider,它必须是一个函数,该函数返回可在任何模板中使用的变量字典。如果存在名称冲突,这些变量将从控制器返回的变量中覆盖,因此这是为控制器返回的变量提供默认值的好方法。

      否则,在最近的版本中,还可以使用base_config.register_hookapp_cfg.py 内注册before_render 钩子系统范围,回调可以附加和覆盖任何模板参数。

      【讨论】:

      • base_config.variable_provider 对我来说也是新的!
      猜你喜欢
      • 2011-01-15
      • 2015-11-01
      • 2016-07-01
      • 1970-01-01
      • 2015-11-27
      • 2020-04-12
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多