J'ai un problème avec bottle python où j'ai le code suivant
import glob
import os
from bottle import run, route, error, template
from Find_Posts import hyperlink_postnames
currentdir = os.getcwd()
def hyperlink_postnames():
hyperlink_filelist = []
os.chdir(currentdir + "\\Blog_Posts\\")
for files in glob.glob("*.txt"):
hyperlink_filelist.append('<a href = "/blog/' + files + '"' + '>' + str(os.path.splitext(files)[0]) + '</a>')
return hyperlink_filelist
qui renvoie la liste suivante
['<a href = "/blog/post1.txt">post1</a>', '<a href = "/blog/post2.txt">post2</a>', '<a href = "/blog/post3.txt">post3</a>', '<a href = "/blog/post4.txt">post4</a>', '<a href = "/blog/post5.txt">post5</a>', '<a href = "/blog/post6.txt">post6</a>']
qui est à son tour alimenté par la route du biberon suivante :
@route('/blog/')
def postnames():
postlist = hyperlink_postnames()
tpl_out = template('blogroll', postlist = postlist)
return tpl_out
qui est introduit dans le modèle blogroll.tpl :
<!DOCTYPE html>
<div>
<p><b>Blog Roll</b></p>
%for postlist in postlist:
<li> {{ postlist }}
%end
</div>
mon problème est que lorsque je rends le modèle dans le navigateur, il transforme la variable postlist dans le modèle en texte brut et non en html (ce qui est écrit à l'intérieur de la liste), Cependant, si je change le code de la bouteille pour qu'il se lise comme ceci (en contournant le modèle), il rend la variable postlist en html mais pas à l'intérieur du modèle, ce qui rend le code inutile :
@route('/blog/')
def postnames():
postlist = hyperlink_postnames()
tpl_out = template('blogroll', postlist = postlist)
return postlist #return the variable directly bypassing the template renders the list as html
Quelqu'un a-t-il une idée de la raison pour laquelle cela se produit ?