python - meaning - Flask genera el error TemplateNotFound a pesar de que existe un archivo de plantilla
flask wikipedia (4)
Estoy tratando de renderizar el archivo home.html
. El archivo existe en mi proyecto, pero sigo obteniendo jinja2.exceptions.TemplateNotFound: home.html
cuando intento renderizarlo. ¿Por qué Flask no puede encontrar mi plantilla?
from flask import Flask, render_template
app = Flask(__name__)
@app.route(''/'')
def home():
return render_template(''home.html'')
/myproject
app.py
home.html
Debe colocar todos sus archivos .html
en la carpeta de plantillas al lado de su módulo python. Y si hay imágenes que estás usando en tus archivos html, entonces necesitas poner todos tus archivos en la carpeta llamada static
En la siguiente Estructura
project/
hello.py
static/
image.jpg
style.css
templates/
homepage.html
virtual/
filename.json
Debe crear sus archivos de plantilla en la ubicación correcta; en el subdirectorio de templates
lado de su módulo python.
El error indica que no hay ningún archivo home.html
en las templates/
directorio. Asegúrate de haber creado ese directorio en el mismo directorio que tu módulo python, y de hecho, has puesto un archivo home.html
en ese subdirectorio. Si su aplicación es un paquete, la carpeta de plantillas debe crearse dentro del paquete.
myproject/
app.py
templates/
home.html
myproject/
mypackage/
__init__.py
templates/
home.html
Alternativamente, si nombró a su carpeta de plantillas como algo diferente a las templates
y no desea cambiarle el nombre a la predeterminada, puede decirle a Flask que use ese otro directorio.
app = Flask(__name__, template_folder=''template'') # still relative to module
Mira esto:
- el archivo de la plantilla tiene el nombre correcto
- el archivo de plantilla está en un subdirectorio llamado
templates
- el nombre que pasa a
render_template
es relativo al directorio de la plantilla (index.html
estaría directamente en el directorio de plantillas,auth/login.html
estaría bajo el directorio auth en el directorio de plantillas). - o bien no tiene un subdirectorio con el mismo nombre que su aplicación, o el directorio de plantillas está dentro de ese subdirectorio.
Si eso no funciona, active la depuración ( app.debug = True
) que podría ayudar a determinar qué es lo que está mal.
No sé por qué pero con Python 3.6 tuve que usar la siguiente estructura de carpetas (poner "templates" un nivel más abajo ...):
test/
app/
hello.py
static/
main.css
templates/
home.html
virtual/
pip-selfcheck.json
etc...