2012-05-21 31 views
6

Próbuję dowiedzieć się więcej o Flasku dla projektu i zastanawiam się, czy ktoś może mi wyjaśnić, dlaczego przykładowy kod wymienia metody "GET" i "POST", kiedy tylko próbuje przetworzyć login jeśli wniosek był "POST"?Dlaczego metoda logowania Flask używa "GET"?

@app.route('/login', methods=['GET', 'POST']) 
def login(): 
    error = None 
    if request.method == 'POST': 
     if request.form['username'] != app.config['USERNAME']: 
      error = 'Invalid username' 
     elif request.form['password'] != app.config['PASSWORD']: 
      error = 'Invalid password' 
     else: 
      session['logged_in'] = True 
      flash('You were logged in') 
      return redirect(url_for('show_entries')) 
    # Note that nowhere do we seem to care about 'GET'... 
    return render_template('login.html', error=error) 

Odpowiedz

8
GET i POST

metody są obsługiwane zarówno przez funkcję.

  • Kiedy używany jest GET, formularz logowania (login.html) zwracany jest dla użytkownika, aby zalogować się. Jest to ostatnia linia funkcji.

  • Po użyciu testu POST formularz jest sprawdzany za pomocą podanego loginu/hasła. Następnie użytkownik jest przekierowywany na inną stronę (adres URL dla show_entries) lub formularz logowania jest wysyłany innym razem z powiązanym błędem.

Należy przeczytać „When do you use POST and when do you use GET?” więcej szczegółów na temat dlaczego POST służy do przetwarzania formularza logowania i dlaczego GET jest używany do wysyłania go.

5

return render_template('login.html', error=error)jest handler dla GET.

Pomyśl o logice:

  1. jeśli request.method == 'POST':
    1. sprawdzić referencje, ustaw metodę błąd
    2. W przypadku braku poświadczeń błędy powrotu poprawnego przekierowania
  2. Jeśli wystąpiły błędy w sekcji POST kodu render_template otrzymuje te błędy, w przeciwnym razie otrzyma None od początku metody. Zakładam, że jeśli błąd jest None w render_template, prawdopodobnie renderuje zwykły formularz logowania.

Note: I've never used flask, but I understand python

Powiązane problemy