2013-01-07 6 views
5

Mam prostą aplikację kolby i chcę użyć @ app.before_request, ale jakoś nie działa! Jestem pewien, że nie myślę o tym poprawnie! widocznie zostanie wezwany użyciu coś takiego:jak zadzwonić @ app.before_request

return redirect(url_for('index')) 

ale muszę go nazwać na:

return render_template('index.html') 

Czy ktoś może pomóc?

Odpowiedz

6

Jeśli chcesz podać kod, być może lepiej będzie zrozumieć twoje pytanie, ale jeśli dobrze rozumiem, chcesz renderować szablon tuż przed żądaniem?

before_request służy do wywoływania niektórych funkcji lub wykonywania pewnych czynności przed żądaniem. Zasadniczo jest to przygotowanie aplikacji do rozpatrzenia wniosku, który się pojawia. Przykład: zainicjuj połączenie z bazą danych i umieść je w obiekcie g, aby uzyskać późniejszy dostęp.

Przykład before_request użytkowania (jak na przykład inicjalizacji DB) wynosi:

@app.before_request 
def before_request(): 
    g.db = connect_db() 

W przypadku wykorzystania go jako @app.before_request więc dekoratora. Coś więcej można znaleźć w Flask docs

Inną kwestią jest, dlaczego chcesz render_template tuż przed złożeniem wniosku? Myślę, że powinieneś renderować szablony w widokach nie w tym miejscu. Pozwoliłeś, aby żądanie dotarło do Twojej aplikacji, Twojego widoku, a następnie wyświetliło tam szablon.

+0

Witam Ignas, właściwie chcę renderować szablon po żądaniu! Chciałem 'return render_template()' do triger '@ app.before_request' jako' return redirect() 'robi! Rozumiem to na razie (używając przekierowania), ale wciąż zastanawiam się, czy to nadal jest możliwe! – Amin