我想从烧瓶应用中的任意位置轻松引用同一目录模板,例如:
.
├── app.py
├── src
│ └── thing
│ ├── __init__.py
│ ├── component.html
│ └── component.py
└── templates
通常情况下,我必须render_template
引用templates
目录并从那里开始,但这很痛苦。如何使用类似component.py
之类的文件路径调用同一目录模板,例如
component.py
中的
return render_template(self.this_files_directory + "/component.html", data=data)
我该怎么做?
答案 0 :(得分:2)
您可以在实例化application object时重新配置默认模板目录:
from flask import Flask
app = Flask(__name__, template_folder='path/to/templates')
“Flasky”这样做的方法是使用Blueprints来匹配您的目录结构,因此在src/thing/__init__.py
内:
from flask import Blueprint
bp = Blueprint('thing', __name__, template_folder='src/thing')
from . import component # e.g. your views for the blueprint
然后,在app.py
内导入并注册每个蓝图:
from flask import Flask
app = Flask(__name__)
from src import thing
app.register_blueprint(thing.bp, url_prefix="/thing")
另外,阅读本文可能非常值得: