Как отобразить строку, которая содержит переменные шаблона django? - PullRequest
4 голосов
/ 16 ноября 2011

Допустим, у меня есть строковая переменная с именем * magic_string *, значение которой установлено в «Это имя продукта {{product.name}} », и это доступно в шаблоне django. Можно ли когда-нибудь проанализировать эту переменную, чтобы показать мне «Это название продукта Samsung GT-8500» вместо этого (при условии, что имя продукта - «GT-8500» и переменная {{product.name}} доступен по тому же шаблону)?

Я пытался сделать что-то подобное, но это не сработало (честно? Я не удивлен):

{{ magic_string|safe }}

Есть идеи / предложения по моей проблеме?

Ответы [ 2 ]

7 голосов
/ 16 ноября 2011

Создать собственный тег шаблона и отобразить эту переменную в качестве шаблона.Например, посмотрите, как пишется тег "ssi" .

С другой стороны, можете ли вы представить эту строку в своем представлении?В любом случае, вот непроверенная версия этого тега:

@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)
6 голосов
/ 16 ноября 2011

Возможно, я не понимаю ваш вопрос, но как насчет

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

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

С уважением.

...