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

Python 如何显示包含django模板变量的字符串?,python,django,string,django-templates,Python,Django,String,Django Templates,假设我有一个名为*magic_string*的字符串变量,该变量的值被设置为“This product name is{{product.name}}”,它可以在django模板中使用。是否有可能解析该变量以显示“此产品名称为Samsung GT-8500”(假设产品名称为“GT-8500”,并且变量{{product.name}}在同一模板中可用) 我试图做这样的事情,但没有成功(老实说,我并不惊讶): 对我的问题有什么想法/建议吗?编写自定义模板标记并将该变量作为模板呈现。 例如,看看如何

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

我试图做这样的事情,但没有成功(老实说,我并不惊讶):


对我的问题有什么想法/建议吗?

编写自定义模板标记并将该变量作为模板呈现。 例如,看看如何

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

@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)

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

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

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

问候。

很有魅力。非常感谢。很抱歉没有升级投票,但我需要更多的声誉来做到这一点:(如果你想使用上下文变量的属性(例如,
person.name
)chuck
从顶部的django.template.base import resolve_variable
,然后将倒数第二行改为
var=resolve_variable(self.varname,context)
。我们扯平了,因为我不明白答案:)但无论如何,谢谢分享!
from django.template import Context, Template
>>> t = Template("This product name is {{ product.name }}")

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