2014-01-14 33 views
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(????) 

或者,我想將請求轉發到不同的藍圖進行處理。無論如何要完成這個?

回答

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") 

燒瓶傾倒全部所有藍圖的模板放入一個全局命名空間(這就是爲什麼建議藍圖將其模板置於子文件夾中「名稱空間」的原因)。

+0

謝謝..我知道我可以做到這一點,但我試圖避免它/感到哈克。轉發它會更優雅,但這是有效的。 – fansonly