Flask - render_template在其他蓝图中没有重定向

时间:2014-01-14 02:24:09

标签: flask blueprint

我在蓝图中有一个观点:

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

或者,我想将请求转发到不同的蓝图进行处理。反正有没有完成这个?

1 个答案:

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