2016-10-01 2 views
1

В чем разница между , flask.request.form.get("xxx") и flask.request.args.get("xxx")?Колба: различия между 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', если ключ не найден, тогда как '[]' access throws 'KeyError' –

+0

' request.args' являются параметрами 'GET',' request.form' - это данные, представленные через форму 'POST' – yedpodtrzitko

+0

Thank вы все за ответы, я понял различия. Может быть, самым полезным является ответ @ Jean-FrançoisFabre – Miles

ответ

1

Правильный пример использования get() - это возврат значения по умолчанию, когда ключ, который вы ищете, не существует в словаре.

Например, если у вас есть словарь д такая, что:

d = {'foo': 'bar'} 

Выполнение следующих действий вернет None:

d.get('baz', None) 

Хотя делать следующее сгенерирует исключение:

d['baz'] 
Смежные вопросы