2015-10-28 9 views
7

Conosco la funzione di pallone render_template. Devo dare il nome del file del modello. Ma ora voglio rendere la stringa di un modello (cioè il contenuto del modello). Ciò ha senso. ma non voglio spiegare ora perché. Come posso rendere semplicemente il testo di un modello?Python Flask Render testo da variabile come render_template

+0

Basta aprire il file modello e restituirlo come stringa. –

+0

Ma se lo faccio (ho installato l'estensione flask-bootstrap) mi darà queste cose: {% estende "bootstrap/base.html"%} ecc. Come testo normale e non gestito. – Faminator

+0

Non è questa la tua domanda? _Come posso rendere il testo di un template semplicemente? _ –

risposta

17

È possibile utilizzare render_template_string:

>>> from flask import render_template_string 
>>> render_template_string('hello {{ what }}', what='world') 
'hello world' 
2

è possibile utilizzare from_string

template = "text {{ hello }}" 
print app.jinja_env.from_string(template).render(hello='Hello') 

>> text Hello 
+1

Dal momento che sta usando Flask può semplicemente usare 'render_template_string' (importato da Flask) – ThiefMaster

+0

Non riesco a spuntare entrambe le risposte come giusto. Anche la tua risposta è buona;) – Faminator

-1

Tratto da What's the easiest way to escape HTML in Python.

import cgi 
rendered = render_template('template.html') 
return cgi.escape(rendered) 
+1

Cosa ha a che fare l'escape HTML con questa domanda? – ThiefMaster

+0

Restituisce il modello di file HTML visualizzato come una stringa. Le altre risposte fanno semplicemente stringhe di template semplici. @ThiefMaster –

0

In realtà è possibile chiamare Jinja2 renda funzione direttamente:

jinja2.Template("I am {{ var }}").render(**paramaters) 

Quando non lavora con la boccetta, questo è utile