Você deve criar seus arquivos de modelo no local correto; no templates
subdiretório próximo ao seu módulo python.
O erro indica que não há home.html
arquivo no templates/
diretório. Certifique-se de ter criado esse diretório no mesmo diretório de seu módulo python e de ter de fato colocado um home.html
arquivo nesse subdiretório. Se seu aplicativo for um pacote, a pasta de modelos deve ser criada dentro do pacote.
myproject/
app.py
templates/
home.html
myproject/
mypackage/
__init__.py
templates/
home.html
Alternativamente, se você nomeou sua pasta de modelos de outra forma templates
e não deseja renomeá-la para o padrão, você pode dizer ao Flask para usar esse outro diretório.
app = Flask(__name__, template_folder='template') # still relative to module
Você pode pedir ao Flask para explicar como tentou encontrar um determinado modelo, definindo a EXPLAIN_TEMPLATE_LOADING
opção para True
. Para cada template carregado, você obterá um relatório registrado no Flaskapp.logger
, no nível INFO
.
Isso é o que parece quando uma pesquisa é bem-sucedida; neste exemplo, o foo/bar.html
modelo estende o base.html
modelo, portanto, há duas pesquisas:
[2019-06-15 16:03:39,197] INFO in debughelpers: Locating template "foo/bar.html":
1: trying loader of application "flaskpackagename"
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /.../project/flaskpackagename/templates
-> found ('/.../project/flaskpackagename/templates/foo/bar.html')
[2019-06-15 16:03:39,203] INFO in debughelpers: Locating template "base.html":
1: trying loader of application "flaskpackagename"
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /.../project/flaskpackagename/templates
-> found ('/.../project/flaskpackagename/templates/base.html')
Os blueprints também podem registrar seus próprios diretórios de modelo , mas isso não é um requisito se você estiver usando blueprints para facilitar a divisão de um projeto maior em unidades lógicas. O diretório principal do modelo do aplicativo Flask é sempre pesquisado primeiro, mesmo ao usar caminhos adicionais por blueprint.
template_folder
caminho por blueprint .