2013-01-07 19 views
5

我有一个简单的烧瓶应用程序,我想使用@ app.before_request,但不知何故它不起作用!我相信我对此没有正确思考! 显然这会在使用类似被称为:如何调用@ app.before_request

return redirect(url_for('index')) 

,但我需要它来呼吁:

return render_template('index.html') 

任何人可以帮助?

回答

6

如果你会给一些代码,也许它会更好地理解你的问题,但如果我理解它的权利,你想在请求之前渲染模板?

before_request用于调用某个函数或在请求之前执行一些操作。所以基本上这是为了准备你的应用程序来处理这个请求。例如:初始化数据库连接并将其放入g对象中以供以后访问。 before_request用法

实施例(如初始化DB例如)为:

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

如果使用它作为@app.before_request所以它是装饰器。更多的东西可以在Flask docs

但另一件事是为什么你要render_template之前请求?我认为你应该在视图中渲染模板而不是在这个地方。您让请求到达您的应用程序,您的视图,然后在那里呈现模板。

+0

您好,Ignas,我真的想在请求后渲染模板!我希望'return render_template()'将'@ app.before_request'作为'return redirect()'来处理!我现在解决这个问题(使用重定向),但仍然想知道这是否仍然可行! – Amin