2014-01-14 2 views
0

У меня есть мнение в Blueprint:Колба - делает шаблон в другом 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

Как обработчики маршрута просто функции 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") 

Колбасные отвалы все e шаблоны для всех чертежей в одно глобальное пространство имен (поэтому чертежи рекомендуются для «пространства имен» для их шаблонов, помещая их в подпапку).

+0

Спасибо .. Я знал, что могу это сделать, но я пытался избежать этого/почувствовал себя взломанным. Было бы более элегантно продвигать его, но это работает. – fansonly

Смежные вопросы