私の Flask-App では、次のようなビュー関数を定義しました。
@app.route("/some/restricted/stuff")
@login_required
def main():
return render_template("overview.html",
stuff = getstuff() )
デコレータは次のように定義されます。
def login_required(something):
@wraps(something)
def wrap(*args, **kwargs):
if "some_admin_name" in session:
return something(*args, **kwargs)
else:
flash("\"You shall not pass!\" - Gandalf")
return redirect(url_for("login"))
return wrap
このコードが使用されているが説明されていないいくつかのソースを見つけたので、基本的にそれをコピーして貼り付けました。
そのコードが何をするのかを理解するのは非常に簡単です: 各リクエストに対して app.route() の後、main() の前に呼び出されるデコレーターを使用でき、アクティブなログインのチェックなどを行うことができます。
したがって、Flask/Python の初心者として、特にこれがどのように機能するかを知りたいと思います:
- 引数「何か」とは何ですか? それがリクエスト?!
- args と kwargs (キーワード引数?) とは何ですか?
- これをデコレータとして使用するには、メソッドをメソッドの内側にラップする必要があるのはなぜですか?
- これはフラスコでのみ使用できますか? そのような何かが便利になる可能性のある他の状況はありますか?