从变量中解析django模板语言代码

时间:2016-12-01 13:00:33

标签: django django-templates django-template-filters

from django import template
from django.template import engines
from django.utils.html import format_html

register = template.Library()
@register.simple_tag
def external_link(link):
    '''
    Creates an anchor tag
    '''
    return format_html('<a target="_blank" href="%s"> Some External Link </a>' % (link))

link = '{% external_link https://stackoverflow.com %}'
template_context = '<div> {{ a_link }} </div>'
template = engines['django'].from_string(template_context)
template.render({
    'a_link': link,
})

当前输出:u'<div> {% external_link https://stackoverflow.com %} </div>'

我需要的是:u'<div> <a target="_blank" href="https://stackoverflow.com"> Some External Link </a> </div>'

如何通过将模板代码保留在变量link

中来实现此目的

1 个答案:

答案 0 :(得分:2)

问题是你传入的字符串要呈现为上下文变量,而不是作为你试图呈现的模板的一部分。

只需将标记作为模板字符串

的一部分包含在内
template_context = '<div>{}</div>'.format(link)