私はフラスコ 中のセッションの2モードがあります。1. '管理' 2. '通常の'2セッションは中止フラスコ
このコードは
if 'admin' not in session:
abort(404)
作品...しかし、もしI「または - 2つのセッションを「編集」しました。
if 'admin' or 'normal' not in session:
abort(404)
両方が異常終了します。私はまた、それがまた
私はフラスコ 中のセッションの2モードがあります。1. '管理' 2. '通常の'2セッションは中止フラスコ
このコードは
if 'admin' not in session:
abort(404)
作品...しかし、もしI「または - 2つのセッションを「編集」しました。
if 'admin' or 'normal' not in session:
abort(404)
両方が異常終了します。私はまた、それがまた
使用any
を試してみてくださいを中止
if 'admin' not in session or 'normal' not in session:
abort(404)
を試してみました。あなたの例から
"works" == "doesn't abort"
と
"not works" == "aborts"
ので、::
例1:
if not any(mode in session for mode in ('admin', 'normal')):
abort(404)
私は "ない作品" 対 "作品" が意味することを前提とし
If 'admin' not in session:
これが中止されない場合、「admin not in session」はFalseです。セッション辞書のキー "admin"を探して見つけます。セッションには「admin」というキーがあります。 「not」はこれを打ち消し、中止しません。
例2:ここでは何が起こるか
If 'admin' or 'normal' not in session
は
If 'admin' or 'normal'
でTrueと評価するので、この表現は、実際のセッションで真(ブール値)キーを探します。これが中止されたことを示します。これは、ある時点でTrueキーに値を割り当てていなければならないことを意味します。
これはちょっと奇妙です(違反しません)ので、コードのどこかでロジックに問題があるはずです。
例3:第1項はあるよう
「最初の項を評価することがTrueと評価された場合、その後、第二項を返す他に、それを返す」作品
if 'admin' not in session or 'normal' not in session
Pythonの論理「または」単に例1(Falseと評価されたと判断した)なので、中止した場合は、第2項をTrueと評価する必要があります。つまり、
'normal' not in session
がTrueであるため、セッションが中止された場合、セッションには「通常」のキーは存在しないと判断できます。
ここでキーとしてモードを保存すると、複数のモードを同時に適用することができますが、これはおそらくあなたが望むものではありません。
あなたはセッションオブジェクトをセットとして扱っているようですが、基本的には単なるdictです。複数のモードがある場合は、 'mode'という単一のキーの使用を検討し、現在のモードをそのキーの値として保存する必要があります。
Wooowを助け
または
希望:は、その後、あなたは次のようにシンプルなロジックを使用することができます。それが本当に私を助けました。 Thaaanks! –
優秀、それは助けてうれしいです。がんばろう。 – gary
ご参考までに - あなたの質問に答えるだけで十分でしたか?もしそうなら、いつでも受け入れることができます... ;-) – gary