我在蓝图中有一个观点:
@blueprint1.route("/home"):
#load some data
....
#if certain condition is present, I want to essentially forward the request
if data.has_condition:
return render_template(????)
或者,我想将请求转发到不同的蓝图进行处理。反正有没有完成这个?
答案 0 :(得分:1)
由于路由处理程序只是Python函数,因此没有理由不能这样做:
# app/bp_zero.py
blueprint_zero = Blueprint(... etc. ...)
@blueprint_zero.route("/some-route")
def handle_some_route():
return "Hello from some-route"
# app/bp_one.py
from .bp_zero import handle_some_route
@blueprint1.route("/home")
def handle_some_route():
if some_condition:
return "Hello from home"
else:
return handle_some_route()
或者,如果您只想使用在另一个蓝图中的蓝图模板文件夹中定义的模板,则可以按名称引用它:
return render_template("some/blueprint_zero/template.html")
Flask将所有蓝图的所有模板转储到一个全局命名空间中(这就是为什么建议蓝图通过将它们放在子文件夹中来“命名”它们的模板)。