Bonjour Ce code m’a presque permis d’obtenir ce que je voulais :
from bottle import run, route, view, static_file
@route("/primo")
@view("page_de_garde.tpl")
def primo() :
url = "primo.html"
#contenu = static_file(url, root='static/textes', mimetype='text/html')
#return{"titre" : "Qui ?", "contenu" : contenu}
return static_file(url, root='static/textes', mimetype='text/html')
@route("/")
@view("page_de_garde.tpl")
def menu() :
menu = """<ul>
<li><a href='/primo'>Qui ?</a>
<li><a href='/secundo'>Quoi ?</a>
<li><a href='/tertio'>Que ?</a>
</ul>
"""
return {"titre" : "Questions", "contenu" : menu}
run(host='0.0.0.0', port=8080, debug= True, reloader=True)
Ce qui est en commentaire correspond à l’idée que j’avais: récupérer la page primo.html et l’insérer dans le body du template.
<!doctype html>
<!-- page_de_garde.tpl -->
<HTML lang="fr">
<HEAD>
<TITLE>{{titre}}</TITLE>
<meta charset="UTF-8">
</HEAD>
<body>
<header><h1>Phrases et attrapes<h1></header>
<h3>{{titre}}</h3>
{{!contenu}}
<hr/>
</body>
</html>
Ça marche, mais bien sûr, la page servie remplace la page de garde. Je perds le header, le titre, etc. La solution en commentaire, elle, me permet de servir ça :
<_io.BufferedReader name='/Users/dupont/blog/phrases/static/textes/primo.html'>
En dessous de mon header et du titre, tout bien…!
Je songe à ouvrir le fichier et à le copier. Mais ça me paraît pas terrible.
Alors je crois qu’il faut me diriger vers un truc comme rebase ou include.
17 h 37 Ça y est, tout est réglé. J’étais parti sur une mauvaise piste. Static_file, c’était pas ça qu’il me fallait en l’occurrence. En fait, c’est tout bêtement un fichier à ouvrir, à lire, pour insérer le contenu dans le template.Je n’avais pas songé qu’un fichier html est tout simplement une suite de caractères.