2016-12-01 6 views
0
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?

+0

Что этот тег достижение? почему бы просто не поместить ссылку прямо? – Sayse

+0

Контекст, в котором я использую эту логику, отличается от других, но я разделил код на проблему, с которой я сталкиваюсь ... – NEB

+0

Я действительно не в состоянии попробовать, но я бы предположил, что вам нужно ''

{}
' .format (link)' – Sayse

ответ

2

Проблема заключается в том, что вы передаете строку, которая будет отображаться как контекстная переменная, а не как часть шаблона, который вы пытаетесь выполнить.

Просто просто включить тег как часть шаблона строки

template_context = '<div>{}</div>'.format(link)