相关疑难解决方法(0)

Jinja2模板宏中的NamedTuples

传奇继续,从原始线程延伸.

所以,我有一些东西在python代码中制作宏:

from flask import get_template_attribute
from jinja2 import Template

    class InternalMacro(object):
        """
        Creates a macro given a name, internal macro text, and content to fill(as namedtuple(t.var), dict(k,v), list(i), or other)
        """
        def __init__(self, name = None,
                           text = None,
                           content_is = None):
            self.name = name
            self.macro_name = "{}_template".format(self.name)
            self.macro_var = "{}_macro".format(self.name)
            self.text = text
            self.content_is = content_is
            self.macro_txt = self.format_text

        @property
        def is_tuple(self):
            return "{{% macro {0}(t) %}}{1}{{% endmacro %}}".format(self.macro_var, self.text)

        @property
        def is_dict(self):
            return "{{% macro …
Run Code Online (Sandbox Code Playgroud)

python templates jinja2

12
推荐指数
1
解决办法
1950
查看次数

如何在Jinja2模板中间接调用宏?

我正在尝试做这样的事情:

{% macro obj_type_1 %}
stuff
{% endmacro %}
{% macro obj_type_2 %}
stuff
{% endmacro %}

{{ (obj|get_type)(obj) }}
Run Code Online (Sandbox Code Playgroud)

在此示例中,get_type是一个将返回的过滤器obj_type_1或obj_type_2- 即要调用的宏的名称obj.我不想标记obj配置输出,因为现在obj在几个模板中用作结构数据,根据上下文使用不同的标记进行渲染.

我知道这里的语法有点折磨,但我认为这是因为我想要做的事情在Jinja模板中不可能立即实现.我试图用模板替换一些if/elif/else废话的一些配置生成代码,但这一点似乎是一个棘手的问题.

python jinja2

7
推荐指数
3
解决办法
2758
查看次数

标签 统计

jinja2 ×2

python ×2

templates ×1