は現在、私はこのコードに私のフラスコアプリでPython:これをより汎用的にする方法 - おそらくデコレータを使用しますか?
@app.route("/protect1")
def protect1():
if not session.get('logged_in'):
session['next'] = "/protect1"
return render_template('login.html')
else:
return "This is the first protected page protect1"
@app.route("/protect2")
def protect2():
if not session.get('logged_in'):
session['next'] = "/protect2"
return render_template('login.html')
else:
return "This is the second protected page protect2"
、すべての作業罰金を持っています。 if/elseの組み合わせごとに各機能(表示)を繰り返す必要があるだけでいいわけではありません。
私はこのpseude・コードのように、いくつかの一般的な方法を持っていることを好むだろう。ここ
@checklogin
@app.route("/protect1")
def protect1():
return "This is the first protected page protect1"
@checklogin
@app.route("/protect2")
def protect2():
return "This is the second protected page protect2"
1つの課題は、@checkloginデコレータはapp.routeパス(例:「/ protect1を」知る必要があるだろうということです)セッション['次の]を正しく設定できるようにする必要があります。このパラメータをデコレータに渡す方法、特に最初にそれを見つける方法はわかりません。つまり、protect1()関数は@ app.routeで装飾されており、そのapp.routeデコレータにどのパラメータ( "/ protect1")が渡されているかを知っていますか?
これまでに試したことをお見せできますか? –
[ビューのデコレータ](http://flask.pocoo.org/docs/0.11/patterns/viewdecorators/) – myaut
私はこれまで見てきましたが、何も書かれていません。 protect1())はデコレータ(app.route()に渡されたパラメータの値を知ることができます。つまり、値が "/ protect1"であることがわかります)... – Happysmithers