GET: get the information stored on that page and send it
HEAD: get only interested in the headers, not the content of the page
POST: post information to that URL and that the server must ensure the data is stored and only stored once
PUT: server might trigger the store procedure multiple times by overwriting the old values more than once
PATCH: used to update partial resources(e.g. update one field)
DELETE: Remove the information at the given location
OPTIONS: Provides a quick way for a client to figure out which methods are supported by this URL

in HTML4 and XHTML1, the only methods a form can submit to the server are GET and POST,
But with JavaScript and future HTML standards you can use the other methods as well

example:

login.html

<html>

  <body>
      <form action = "http://localhost:5000/login" method = "post">

      <p>Enter Name:</p>
      <p><input type = "text" name = "nm" /></p>
      <p><input type = "submit" value = "submit" /></p>

    </form>
  </body>

</html>
test_login.py
from flask import Flask, redirect, url_for, request
app = Flask(__name__)

@app.route('/success/<name>')
def success(name):
    return 'welcome %s' % name

@app.route('/login', methods = ['POST', 'GET'])
def login():

    if request.method == 'POST':
       user = request.form['nm']
       return redirect(url_for('success', name = user))
    else:
       user = request.args.get('nm')
       return redirect(url_for('success', name = user))

if __name__ == '__main__':
    app.run(host='0.0.0.0')