5

シンプルなフラスコアプリがあり、@ app.before_requestを使用したいのですが、どういうわけか機能しません。私はこれについて正しく考えていないと確信しています!どうやらそれは次のようなものを使用して呼び出されます:

return redirect(url_for('index'))

しかし、私はそれを呼び出す必要があります:

return render_template('index.html')

誰か助けてもらえますか?

4

1 に答える 1

8

いくつかのコードを提供する場合は、質問を理解する方が良いかもしれませんが、正しく理解できれば、リクエストの直前にテンプレートをレンダリングしたいですか?

before_requestリクエストの前に何らかの関数を呼び出したり、何らかのアクションを実行したりするために使用されます。つまり、基本的には、アプリが来るリクエストを処理する準備をするためのものです。例: データベース接続を初期化しg、後でアクセスできるようにオブジェクトに入れます。

before_request の使用例 (たとえば DB の初期化など) は次のとおりです。

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

そのまま使うなら@app.before_requestデコレータ。Flask docsでさらに何かを見つけることができます

しかし、別のことは、なぜrender_templateリクエストの直前に欲しいのですか? この場所ではなく、ビューでテンプレートをレンダリングする必要があると思います。リクエストをアプリ、ビューに到達させ、そこでテンプレートをレンダリングします。

于 2013-01-07T08:47:10.843 に答える