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_templatees relativo al directorio de la plantilla (index.htmlestaría directamente en el directorio de plantillas,auth/login.htmlestarí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...