/ / Flask génère une erreur TemplateNotFound alors que le fichier modèle existe - python, flask

Le flacon génère une erreur TemplateNotFound même si le fichier modèle existe - python, flask

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 № 1

Vous 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:

  1. le fichier modèle a le bon nom
  2. le fichier modèle se trouve dans un sous-répertoire appelé templates
  3. 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.)
  4. 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