July 4, 2019

Python Flask - HTTP Methods

<html>
   <body>
      <form action = "/login" method = "post">
         <p>Enter Name:</p>
         <p><input type = "text" name = "name" /></p>
         <p><input type = "submit" value = "submit" /></p>
      </form>
   </body>
</html>

login.html




@app.route("/user/<username>")
def show_user(username):
    return "User name: %s" % username


@app.route("/login", methods=["POST", "GET"])
def login():
    if request.method == "POST":
        user = request.form["name"] # 사용자가 전달한 값이 user 변수에 저장된다.
        return "Welcome !! %s " % user
    else:
        user = request.args.get("name") # 
        return redirect(url_for("show_user", username = user))

app.py


HTTP Method POST, GET 둘중 POST로 전송시 조건문에 의해 "user = request.form["name"]" 부분이 실행됩니다.




[POST 전송]




"login.html"에서 "DongDongE" 문자열을 담아 전송하게 됩니다.

if request.method == "POST":
        user = request.form["name"] # 사용자가 전달한 값이 user 변수에 저장된다.
        return "Welcome !! %s " % user

Python Code에서는 POST 조건에 의해 사용자에게 전달받은 값을 user 변수에 저장이 되고, 저장된 값을 "Welcome" 문자열과 함께 반환됩니다.




GET으로 전송이 아래와 같이 URL Redirect가 발생합니다.

URL: Ex) http://192.168.56.132/login?name=Test_1234 으로 접속시

        user = request.args.get("name")
        return redirect(url_for("show_user", username = user))

Python Code "request.args.get("name")" 에서 GET 방식으로 "name" 파라미터의 값을 가져오게 됩니다.

반환값으로 URL Redirect가 발생하게 되며, show_user 함수가 실행이 되고, show_user 함수의 인자값으로 user의 값이 전달됩니다.