【问题标题】:Flask: differences between request.form["xxxxx"], request.form.get("xxxxxx") and request.args.get("xxxxx")? [duplicate]Flask:request.form["xxxxx"]、request.form.get("xxxxxx") 和 request.args.get("xxxxx") 之间的区别? [复制]
【发布时间】:2016-10-01 12:06:51
【问题描述】:

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

我有这个问题是因为我正在使用 flask-login 来处理身份验证。
特别是在以下代码中(取自flask-login 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

【问题讨论】:

  • req.form 是一本字典。 get 如果找不到密钥,则返回 None,而 [] 访问会抛出 KeyError
  • request.argsGET参数,request.form是通过POST表单提交的数据
  • 谢谢大家的回答,我已经理解了差异。也许最有帮助的是@Jean-FrançoisFabre 答案

标签: python flask flask-login


【解决方案1】:

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

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

d = {'foo': 'bar'}

执行以下操作将返回无:

d.get('baz', None)

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

d['baz']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2018-10-17
    • 2014-11-01
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    相关资源
    最近更新 更多