如何显示包含django模板变量的字符串?
问题描述:
比方说,我有一个名为* magic_string *的字符串变量,其值设置为“此产品名称为{{product.name}}”,它可在django模板中使用。 (假设产品名称是“GT-8500”并且变量{{product.name}}是可用的,是否有可能解析该变量以向我显示“此产品名称是三星GT-8500”相同的模板)?如何显示包含django模板变量的字符串?
我试图做这样的事情,但它不工作(说实话我不是很惊讶?):
{{ magic_string|safe }}
任何想法/我的问题的建议吗?
答
编写自定义模板标记并将该变量渲染为模板。 例如看看如何"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)
答
也许我不明白你的问题,但怎么样,
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
所以我们甚至,因为我不明白答案:)但无论如何感谢分享! –
工程就像一个魅力。谢谢 !对不起,但我需要更多的声誉来做到这一点:( –
如果你想使用顶级的django.template.base import resolve_variable'中的上下文变量的属性(例如'person.name')chuck',那么将第二行更改为'var = resolve_variable(self.varname,context)'。 –