0

我在蓝图中有一个视图:

@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(????)

或者,我想将请求转发到不同的蓝图进行处理。有没有办法做到这一点?

4

1 回答 1

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 将所有蓝图的所有模板转储到一个全局命名空间中(这就是为什么建议蓝图通过将它们放在子文件夹中来“命名空间”它们的模板)。

于 2014-01-14T02:49:42.863 回答