2012-05-21 11 views
6

मैं एक परियोजना के लिए फ्लास्क के बारे में अधिक जानने की कोशिश कर रहा हूं, और मुझे आश्चर्य है कि कोई मुझे बता सकता है कि क्यों नमूना कोड 'GET' और 'POST' विधियों को सूचीबद्ध करता है, जब यह केवल लॉगिन को संसाधित करने का प्रयास करता है अगर अनुरोध 'पोस्ट' था?फ्लास्क का लॉगिन तरीका '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) 

उत्तर

8

प्राप्त और पोस्ट तरीकों दोनों अपने समारोह द्वारा नियंत्रित किया जाता है।

  • जब प्राप्त किया जाता है, लॉगिन प्रपत्र (login.html) में लॉग इन करने के लिए उपयोगकर्ता दिया जाता है। इस समारोह की अंतिम पंक्ति है।

  • जब पोस्ट का उपयोग किया जाता है, तो फॉर्म उपलब्ध लॉगिन/पासवर्ड का उपयोग करके सत्यापित किया जाता है। उसके बाद उपयोगकर्ता को या तो किसी अन्य पृष्ठ पर रीडायरेक्ट किया जाता है (show_entries के लिए यूआरएल) या लॉगिन फॉर्म संबंधित त्रुटि के साथ एक और बार भेजा जाता है।

आप क्यों पोस्ट लॉगिन प्रपत्र कार्रवाई करने के लिए प्रयोग किया जाता है और क्यों मिलता इसे भेजने के लिए प्रयोग किया जाता है के बारे में अधिक जानकारी के लिए 'When do you use POST and when do you use GET?' होनी चाहिए।

5

return render_template('login.html', error=error)GET के लिए हैंडलर है।

तर्क के बारे में सोचो:

  1. अगर request.method == 'पोस्ट':
    1. चेक साख, सेट त्रुटि विधि
    2. यदि कोई क्रेडेंशियल त्रुटियों सही रीडायरेक्ट लौट
  2. यदि कोड render_template के पोस्ट अनुभाग में त्रुटियां हैं तो उन्हें त्रुटियां मिलती हैं, अन्यथा यह विधि की शुरुआत से None प्राप्त होती है। मुझे लगता है कि render_template में त्रुटि None है, तो शायद यह सिर्फ एक सादा ओल 'लॉगिन फ़ॉर्म प्रस्तुत करता है।

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

संबंधित मुद्दे