J'essaye de rendre le fichier home.html
. Le fichier existe dans mon projet, mais je continue à obtenir jinja2.exceptions.TemplateNotFound: home.html
quand j'essaye de le rendre. Pourquoi "t Flask ne trouve-t-il pas mon modèle?"
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def home():
return render_template("home.html")
/myproject
app.py
home.html
Réponses:
69 pour la réponse № 1Vous devez créer vos fichiers de modèle à l'emplacement correct. dans le templates
sous-répertoire à côté de votre module python.
L'erreur indique qu'il n'y a pas home.html
déposer dans le templates/
annuaire. Assurez-vous que vous avez créé ce répertoire dans le même répertoire que votre module python et que vous avez bien mis un home.html
fichier dans ce sous-répertoire. Si votre application est un package, le dossier des modèles doit être créé. à l'intérieur le paquet.
myproject/
app.py
templates/
home.html
myproject/
mypackage/
__init__.py
templates/
home.html
Sinon, si vous avez nommé votre dossier de modèles, utilisez autre chose que templates
et ne voulez pas le renommer par défaut, vous pouvez dire à Flask d’utiliser cet autre répertoire.
app = Flask(__name__, template_folder="template") # still relative to module
2 pour la réponse № 2
Regarde ça:
- le fichier modèle a le bon nom
- le fichier modèle se trouve dans un sous-répertoire appelé
templates
- le nom que vous passez à
render_template
est relatif au répertoire du modèle (index.html
serait directement dans le répertoire des modèles,auth/login.html
serait sous le répertoire auth dans le répertoire templates.) - Soit vous ne disposez pas d'un sous-répertoire portant le même nom que votre application, soit le répertoire des modèles est à l'intérieur de ce sous-répertoire.
Si cela ne fonctionne pas, activez le débogage (app.debug = True
) qui pourrait aider à comprendre ce qui ne va pas.
1 pour la réponse № 3
Je ne sais pas pourquoi mais avec Python 3.6, je devais utiliser la structure de dossiers suivante (mettre "templates" à un niveau inférieur ...):
test/
app/
hello.py
static/
main.css
templates/
home.html
virtual/
pip-selfcheck.json
etc...
0 pour la réponse № 4
Vous devez mettre tout vous .html
fichiers dans le modèle dossier à côté de votre module python. Et si vous utilisez des images dans vos fichiers html, vous devez placer tous vos fichiers dans le dossier nommé statique
Dans la structure suivante
project/
hello.py
static/
image.jpg
style.css
templates/
homepage.html
virtual/
filename.json