티스토리 뷰

반응형

 

Flask는 몇 줄의 코드만으로 간단하게 HTML FORM 데이터 송수신을 할 수 있다.

 

파일명 : 8_sending_form_data.py

# form 데이터를 송수신하기 위해서는 request 를 import 해야한다.
from flask import Flask, render_template, request
app = Flask(__name__)

@app.route('/')
def student():
    # ROOT URL 로 접근했을 때 8_sending_form_data.html 을 렌더링한다.
    return render_template('8_sending_form_data.html')

@app.route('/result',methods = ['POST', 'GET'])
def result():
    # result URL 로 접근했을 때, form 데이터는 request 객체를 이용해 전달받고
    # 이를 다시 8_sending_form_data_result.html 렌더링하면서 넘겨준다.
    if request.method == 'POST':
        result = request.form
        return render_template("8_sending_form_data_result.html",result = result)

if __name__ == '__main__':
    app.run(debug = True)

 

파일명 : 8_sending_form_data.html

<html>
    <body>
        <form action = "http://127.0.0.1:5000/result" method = "POST">
            <p>Name <input type = "text" name = "Name" /></p>
            <p>Physics <input type = "text" name = "Physics" /></p>
            <p>Chemistry <input type = "text" name = "chemistry" /></p>
            <p>Maths <input type ="text" name = "Mathematics" /></p>
            <p><input type = "submit" value = "submit" /></p>
        </form>
    </body>
</html>

ROOT URL 로 접근하면 student() 함수가 호출되는데, 이 함수는 render_template() 메소드를 통해 8_sending_form_data.html 을 웹브라우저에 렌더링한다. 8_sending_form_data.html 은 네 개의 text 입력상자와 한 개의 submit 버튼으로 구성되어 있는데 submit 버튼을 클릭하면 http://127.0.0.1:5000/result 로 이동한다. 데코레이터에 의해 result() 함수가 호출되고, 이 함수는 html form 데이터를 request 객체를 통해 수신한다. (form 데이터는 request 객체의 form 속성에 담겨 있다.) 그리고 다시 result 라는 이름의 객체에 값을 담아 8_sending_form_data_result.html 에 전달한다.

 

파일명 : 8_sending_form_data_result.html

<!doctype html>
<html>
    <body>
        <table border = 1>
            {% for key, value in result.items() %}
            <tr>
                <th> {{ key }} </th>
                <td> {{ value }} </td>
            </tr>
            {% endfor %}
        </table>
    </body>
</html>

form 데이터는 반복문을 통해 화면에 출력된다.

 

textbox 에 값을 입력하고 submit 버튼을 클릭한다.

 

form 데이터는 request 객체를 통해 전달된다.

 

반응형

'IT > Flask' 카테고리의 다른 글

[Flask] 세션 (Sessions)  (0) 2020.08.12
[Flask] 쿠키 (Cookies)  (0) 2020.08.12
[Flask] 정적 파일 (Static file)  (0) 2019.04.18
[Flask] 템플릿 보여주기 (Template Rendering)  (0) 2019.04.16
[Flask] HTTP 메소드 (HTTP Method)  (0) 2019.04.16
댓글
공지사항