2011-11-16 152 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

所以我們甚至,因爲我不明白答案:)但無論如何感謝分享! –

相關問題