2016-10-01 4 views
1

flask.request.form["xxx"],flask.request.form.get("xxx")flask.request.args.get("xxx")の違いは何ですか?Flask:request.form ["xxxxx"]、request.form.get( "xxxxxx")とrequest.args.get( "xxxxx")の違いは?

私はフラスコログインを使用して認証を処理しているため、この質問があります。
特に、次のコード(フラスコログインのgithubページから取得)では、req.form.get("email")の場合はメールがNoneで、req.form["email"]の場合はメールが値ではないのは分かりません。ここにコードがあります。

@login_manager.request_loader 
def request_loader(req): 
    email = req.form.get('email') 
    if email not in users: 
     return 

    user = User() 
    user.id = email 

    # DO NOT ever store passwords in plaintext and always compare password 
    # hashes using constant-time comparison! 
    user.is_authenticated = req.form['pw'] == users[email]['pw'] 

    return user 
+0

'req.form'は辞書です。 'get'はキーが見つからなければ' None 'を返し、' [] 'アクセスは' KeyError'をスローします。 –

+0

'request.args'は' GET'パラメータです、 'request.form'は' POST'形式で送信されたデータです – yedpodtrzitko

+0

あなたの答えはすべて、私は違いを理解しています。たぶん最も役立つのは、@ Jean-FrançoisFabreの答えです – Miles

答えて

1

適切な使用例get()は、探しているキーが辞書に存在しないときにデフォルト値を返すことです。例えば

、あなたがするような辞書Dがある場合:次のようにやっては例外をスローしますが

d.get('baz', None) 

d = {'foo': 'bar'} 

は、次の操作を実行すると、Noneを返します

d['baz'] 
関連する問題