Flask:request.form[“xxxxx”]、request.form.get(“xxxxxx”)和request.args.get(“xxxxx”)之间的区别?

Mil*_*les 5 python flask flask-login

flask.request.form["xxx"]flask.request.form.get("xxx")和之间有什么区别flask.request.args.get("xxx")

我有这个问题,因为我正在使用flask-login 来处理身份验证。
特别是在下面的代码中(取自flask-login github页面),我不明白为什么 with req.form.get("email"), email 是None,而 with req.form["email"], 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
Run Code Online (Sandbox Code Playgroud)

owo*_*eid 4

正确的用例 get() 是当您正在查找的键不存在于字典中时返回默认值。

例如,如果您有一个字典 d ,使得:

d = {'foo': 'bar'}
Run Code Online (Sandbox Code Playgroud)

执行以下操作将返回 None:

d.get('baz', None)
Run Code Online (Sandbox Code Playgroud)

执行以下操作时会抛出异常:

d['baz']
Run Code Online (Sandbox Code Playgroud)