包含模板标记的Django模板变量,ex{{{%some_tag%}}

包含模板标记的Django模板变量,ex{{{%some_tag%}},django,django-templates,Django,Django Templates,我有一个接收列表上下文变量tags\u list的模板。我需要迭代这个列表,在模板中“插入”标记,如下所示: {% for tag in tags_list %} {{ tag.tag }} {% endfor %} {% for graph_row in graph_rows %} <div class="row"> {% for graph in graph_row %} <div class="col-md-{{

我有一个接收列表上下文变量tags\u list的模板。我需要迭代这个列表,在模板中“插入”标记,如下所示:

{% for tag in tags_list %}
    {{ tag.tag }}
{% endfor %}
{% for graph_row in graph_rows %}
    <div class="row">
        {% for graph in graph_row %}
            <div class="col-md-{{ graph.width }}">
                {{ graph.graph }}
            </div>
        {% endfor %}
    </div>
{% endfor %}
当呈现时,它返回tag.tag的文本值“{%tagxxx%}”,而不是呈现的标记

如何使模板呈现呈现上下文变量的值?或者,是否有一个过滤器,一种反向逐字记录,它将导致呈现上下文变量的值

更新的背景信息

标签列表是通过一个相当复杂的过程创建的,该过程涉及从表/模型字段执行一些用户提供的文本。真实模板的相关部分如下所示:

{% for tag in tags_list %}
    {{ tag.tag }}
{% endfor %}
{% for graph_row in graph_rows %}
    <div class="row">
        {% for graph in graph_row %}
            <div class="col-md-{{ graph.width }}">
                {{ graph.graph }}
            </div>
        {% endfor %}
    </div>
{% endfor %}
{graph_rows%}
{graph_row%}中的图形为%
{{graph.graph}}
{%endfor%}
{%endfor%}
图形值如下所示:{'graph':'{%piechart data1%}','width':3}

请注意,上下文变量graph_rows中条目的顺序与行中图形的顺序一样重要,因为这决定了图形在页面上的位置。保持此顺序对于方案正确工作至关重要

目前,view函数只需执行{%include…%}即可获得上面的模板段,以正确的顺序进行渲染。这种方法简单明了


正如有人建议的那样,我可以在view函数中执行模板渲染,但这会使设计变得有点复杂,如果有一种简单的方法触发{graph.graph}的渲染,我希望避免这样做。另外请注意,通过将渲染移动到视图中,我失去了从任意位置(特别是表字段)轻松获取模板的能力。

我相信我可以为您提供一种获得所需结果的方法,但如果您可以提供一些上下文,则可能有更好的方法来实现所需功能

无论如何,您可以在view.py中执行以下操作:

tags_list = [
    Template('{% load my_tags %}{% ' + t.tag + ' %}').render(Context())
    for t in tags_list
]

Django的一大优点是解决方案和代码片段库。可悲的是,它们并不像人们所希望的那样组织有序、容易找到。尽管如此,谷歌还是找到了一些通用的解决方案

{% render tag.tag %}
以下是几个链接:

我将使用经过一些清理的常规方法进行错误检查

顺便说一句,我觉得这项技术总体上很有用,可能适合包含在标准标签中

更新日期2014年3月28日

在看了上面和其他几个之后,这就是我使用的。有一个有用的评论

这是解决问题的一部分方法。不幸的是,在我的例子中,自定义模板标记 {%pie_chart%}无法在类RenderAsTemplateNode中进行渲染


我没有对此进行测试,但这个堆栈溢出问题似乎指出了方向。

请发布您的标记模型代码。您的意思是
tag.tag
的值是
{%tagxxx%]
,您希望呈现它吗?这是不可能的。(至少默认情况下不可能…)您想在这个列表上迭代“插入”标记,所以在views.py中进行操作可能更好