티스토리 뷰
HTTP는 URL 접근에 대해 몇 가지 다른 방식을 제공하고 있다. 기본적으로는 GET 방식을 제공하지만 route() 데코레이터에 methods 옵션을 추가함으로써 다른 방식으로 변경할 수 있다. HTTP 메소드에는 대표적으로 GET 방식과 POST 방식이 있다.
▶ GET : 브라우저가 어떤 페이지에 저장된 정보를 단지 얻기 위해 서버에 요청하고, 서버는 그 정보를 보낸다. 가장 일반적인 방식이다.
www.python-test.com?id=flask&passwd=1234
URL의 끝은 "?" 로 알리고 그 뒤에 Key=Value 로 형식으로 값을 전달한다. 여러개의 Key-Value 를 전달할 때는 "&" 로 구분한다. HTTP HEADER에 내용이 담겨 서버로 전달되기 때문에 BODY는 빈 상태가 된다.
▶ POST : 브라우저는 서버에게 새로운 정보를 전송하도록 특정 URL에 요청하고 그 정보가 오직 한 번 저장되는 것을 보장한다. 보통 HTML 폼을 통해서 서버에 데이터를 전송하는 방식이다. GET 방식과는 달리 HTTP BODY에 내용이 담겨 서버에 전달된다.
파일명 : 5_http_methods.py
from flask import Flask, redirect, url_for, request
app = Flask(__name__)
@app.route('/success/<name>')
def success(name):
return 'Welcome %s' % name
# route() 데코레이터에 methods 옵션을 추가한다.
# POST방식과 GET방식 모두 처리가 가능하며
# 함수 내부에서 메소드 방식에 따라 다르게 처리가 되도록 분기처리 한다.
@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(debug=True)
파일명 : 5_http_methods.html
<html>
<body>
<form action = "http://127.0.0.1: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>
두 개의 파일을 같은 경로에 저장하고 html 파일을 실행한다. Text form에 "Flask" 를 입력하고 submit 버튼을 클릭하면 POST 방식으로 "http://127.0.0.1:5000/login" URL 을 접근한다. "Flask" 라는 문자열은 login() 함수의 user 변수에 저장되고 다시 이 값은 url_for 함수에 의해 name 이라는 이름으로 success() 함수에 전달된다. success() 함수는 전달받은 name 변수의 값을 브라우저에 출력한다.
'IT > Flask' 카테고리의 다른 글
[Flask] 정적 파일 (Static file) (0) | 2019.04.18 |
---|---|
[Flask] 템플릿 보여주기 (Template Rendering) (0) | 2019.04.16 |
[Flask] URL 생성 (URL Building) (0) | 2019.03.28 |
[Flask] 변수 규칙 (Variable Rules) (0) | 2019.03.27 |
[Flask] 라우팅 (Routing) (0) | 2019.03.22 |