如何显示包含django模板变量的字符串?

时间:2011-11-16 07:34:06

标签: python django string django-templates

假设我有一个名为* magic_string *的字符串变量,其值设置为“此产品名称为 {{product.name}} ”,并且可以在django模板中使用。是否有可能解析该变量以显示“此产品名称为Samsung GT-8500”(假设产品名称为“GT-8500”和变量 {{product.name}} 可以使用相同的模板)?

我试图做这样的事情,但它不起作用(老实说?我并不感到惊讶):

{{ magic_string|safe }}

关于我的问题的任何想法/建议?

2 个答案:

答案 0 :(得分:7)

编写自定义模板标记并将该变量渲染为模板。 例如,查看"ssi" tag is written的方式。

另一方面,您可以在视图中渲染此字符串吗?无论如何,这是一个未经测试的标签版本:

@register.tag
def render_string(parser, token):
    bits = token.contents.split()
    if len(bits) != 2:
        raise TemplateSyntaxError("...")
    return RenderStringNode(bits[1])


class RenderStringNode(Node):
    def __init__(self, varname):
        self.varname = varname

    def render(self, context):
        var = context.get(self.varname, "")
        return Template(var).render(context)

答案 1 :(得分:6)

也许我不明白你的问题,但是,

from django.template import Context, Template
>>> t = Template("This product name is {{ product.name }}")

>>> c = Context({"product.name": " Samsung GT-8500"})
>>> t.render(c)

问候。