Следующее является частью моей настройки в приложении flask, использующем Flask -Blueprints, где reports
- это чертеж:
app
├── __init__.py
└── /reports
├── /templates
│ └── /reports
│ └── reports.html
├── __init__.py
└── views.py
Это мой app/reports/__init.py
:
from flask import Blueprint
reports_bp = Blueprint('reports', __name__)
from app.reports import views
И вот как я регистрирую план отчетов в app/__init__.py
(обратите внимание, особенно, как я указываю расположение папки моего шаблона как 'templates'
):
...
from app.reports import reports_bp
app.register_blueprint(reports_bp, url_prefix='/reports', template_folder='templates')
...
Наконец я в app/reports/views.py
есть функция вида, которая выглядит примерно так:
@reports_bp.route('/')
def reports():
...
return render_template('reports/reports.html', ...)
render_template
однако не находит мой шаблон reports.html
, и когда я включаю переменную EXPLAIN_TEMPLATE_LOADING
config, я получаю это обратная связь:
[2020-03-11 14:40:21,966] INFO in debughelpers: Locating template "reports/reports.html":
1: trying loader of application "app"
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /path_to_my_app/app/templates
-> no match
2: trying loader of blueprint "restplus_doc" (flask_restplus.apidoc)
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /path_to_my_app/my_virtualenv/lib/python3.7/site-packages/flask_restplus/templates
-> no match
Error: the template could not be found.
The template was looked up from an endpoint that belongs to the blueprint "reports".
Maybe you did not place a template in the right folder?
See http://flask.pocoo.org/docs/blueprints/#templates
Ожидается первый путь поиска, но , почему второй путь поиска находится в папке пакета сайта внутри моего virtualenv, к которому бесполезно прикреплен постфикс /templates
? Не должен ли второй путь поиска быть папкой с чертежами reports
?
Я использую VS Code и запускаю его в режиме отладчика. Моя установленная Flask - это версия 1.0.2.
РЕДАКТИРОВАТЬ: изменение template_folder
при регистрации чертежа на что-то другое, например 'reports/templates'
, не меняет путь поиска номер 2. Что дает мне подсказку, что какой-то другой проект запугивает мой проект и контролирует, где выполняется render_template.
EDIT 2: Реальная проблема заключалась в том, что для моего проекта не был создан загрузчик. Номер загрузчика. 2 относится к другой схеме, о которой я не знал при публикации вопроса и не имеет отношения к моей проблеме. См. Опубликованный ответ для более подробной информации.