2016-12-01 3 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, 
}) 

Stromausgang: u'<div> {% external_link https://stackoverflow.com %} </div>'Parsen des django Vorlage Sprachcode aus einer Variablen

Was ich brauche, ist: u'<div> <a target="_blank" href="https://stackoverflow.com"> Some External Link </a> </div>'

Wie dies zu erreichen, indem Sie den Template-Code in den Variablen link zu halten?

+0

Was diesen Tag zu erreichen ist? Warum nicht einfach den Link direkt einfügen? – Sayse

+0

Der Kontext, in dem ich das benutze ist Logik ist anders, aber ich habe den Code zu dem Problem, das mir bevorsteht ... – NEB

+0

Ich kann es nicht wirklich versuchen, aber ich könnte mir vorstellen, dass Sie brauchen '

{}
'.format (link)' – Sayse

Antwort

2

Das Problem besteht darin, dass Sie eine Zeichenfolge übergeben, die als Kontextvariable gerendert wird, und nicht als Teil der Vorlage, die Sie zu rendern versuchen.

Fügen Sie einfach nur den Tag als Teil der Vorlage Zeichenfolge

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