2011-11-16 146 views
4

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

我试图做这样的事情,但它不工作(说实话我不是很惊讶?):

{{ magic_string|safe }} 

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

回答

6

编写自定义模板标记并将该变量渲染为模板。 例如看看如何"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) 
+0

工程就像一个魅力。谢谢 !对不起,但我需要更多的声誉来做到这一点:( –

+0

如果你想使用顶级的django.template.base import resolve_variable'中的上下文变量的属性(例如'person.name')chuck',那么将第二行更改为'var = resolve_variable(self.varname,context)'。 –

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) 

问候。

+0

所以我们甚至,因为我不明白答案:)但无论如何感谢分享! –

相关问题