flask12 use form

AJAX Åë½ÅÇϱâ Àü¿¡ ÆûÀ¸·Î Åë½ÅÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ­ ¸ÕÀú ¾Ë¾Æ º»´Ù.

ÆÄÀ̽㿡¼­ µ¥ÀÌÅ͸¦ JSONÀ¸·Î º¯È¯ ÇÏ´Â ¹æ¹ý

flask¿¡¼­´Â ¼­¹ö¿¡¼­ ÀÀ´äÇϱâ À§ÇØ jsonify¿Í json.dumps¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù.
jsonify ÇÔ¼ö´Â ¾Æ½ºÅ° À̽ºÄÉÀÌÇÁ ÀÎÄÚµùÀ» Àû¿ëÇϱ⠶§¹®¿¡ ÇѱÛÀÌ ÀÖÀ¸¸é ±úÁø´Ù.
À̶§´Â json.dumps ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.

    response = jsonify(userlist)

    response = json.dumps(userlist, default=str, ensure_ascii=False)

jsonify ¿Í json.dumps, dictionary »ç¿ë½Ã Ŭ¶óÀ̾ðÆ®·Î ¹ÝȯÇÏ´Â Content typeÀÌ´Ù.

¸í·É¾î
Çöó½ºÅ© À¥ ¸®Äù½ºÆ® ¸®ÅÏ ÇÔ¼ö
jsonify : application/json jreturn jsonify({'token' : token}), 201
json.dumps : text/html; charset=utf-8 return json.dumps({'token' : token}), 201
dictionary: application/json return {'token' : token}, 200

ÆûÀ¸·Î ¼­¹ö¿Í Åë½ÅÇϱâ

ajax¸¦ »ç¿ëÇÏÁö ¾Ê°í ÆûÀ» ÀÌ¿ëÇØ ¼­¹ö·Î µ¥ÀÌÅ͸¦ º¸³»´Â ¹æ½ÄÀÌ´Ù.

html

<!--<form action = "/main/form_to_json" method = "GET">-->
<form action = "/main/form_to_json" method = "POST">
    <p>À̸§: <input type = "text" name = "Name" /></p>
    <p>¸Þ¸ð: <textarea type ="text" name = "Memo" placeholder="¸Þ¸ð¸¦ ³²°Ü ÁÖ¼¼¿ä"></textarea></p>
    <p><input type = "submit" value = "º¸³»±â" /></p>
</form>
python

@bp.route('/form_to_json', methods=['POST', 'GET'])
def form_to_json():
    print('Request URL: http://127.0.0.1:8888/main/form_to_json')

    if request.method == 'GET':
        print(f"GET result['Name']={request.args['Name']}")
        print(f"GET result['Address']={request.args['Memo']}")
    else:
        result = request.form
        print(f"POST result['Name']={result['Name']}")
        print(f"POST result['Address']={result['Memo']}")

    response = "alert('¿äû ¿Ï·á. È®ÀÎ ¹öÆ°À» ´©¸£¸é ¸ÞÀÌÆäÀÌÁö·Î À̵¿ ÇÕ´Ï´Ù'); location.replace('/main/index');"
    return f"<script type='text/javascript'>{response}</script>"

GETÀ¸·Î º¸³¾¶§ ÆÄÀ̽㠼­¹ö ·Î±×

Request URL: http://127.0.0.1:8888/main/form_to_json
GET result['Name']=±èö¼ö
GET result['Address']=aaaa
127.0.0.1 - - [12/Jul/2023 06:43:08] "GET /main/form_to_json?Name=±èö¼ö&Memo=aaaa HTTP/1.1" 200 -
127.0.0.1 - - [12/Jul/2023 06:43:11] "GET /main/index HTTP/1.1" 200 -

POST·Î º¸³¾¶§ ÆÄÀ̽㠼­¹ö ·Î±×

Request URL: http://127.0.0.1:8888/main/form_to_json
POST result['Name']=±èö¼ö
POST result['Address']=aaa
127.0.0.1 - - [12/Jul/2023 06:44:29] "POST /main/form_to_json HTTP/1.1" 200 -
127.0.0.1 - - [12/Jul/2023 06:44:31] "GET /main/index HTTP/1.1" 200 -

<form> ű×ÀÇ action ¼Ó¼ºÀº ¼­¹ö URLÀ» ¸í½ÃÇÑ´Ù.
<form action="URL">

<form> ű×ÀÇ  input¿¡ ÀÖ´Â name ¼Ó¼ºÀº ¼­¹ö¿¡¼­´Â °Ë»ö Å°·Î »ç¿ëµÈ´Ù.
¿©±â¼­ nameÀº °¢°¢ "Name", "Memo"ÀÌ´Ù.

ÆÄÀ̽ãÀÇ Çöó½ºÅ©¿¡¼­ get ¹æ½ÄÀ϶§ °ªÀ» ±¸Çϱâ

request.args[key]
request.args['Name'] ¶Ç´Â request.args.get('Name')
request.args['Memo'] ¶Ç´Â request.args.get('Memo')

ÆÄÀ̽ãÀÇ Çöó½ºÅ©¿¡¼­ post ¹æ½ÄÀ϶§ °ªÀ» ±¸Çϱâ

request.form[key]
request.form['Name']
request.form['Memo']

timeout: ¹Þ±â ±â´Ù¸®´Â ½Ã°£À¸·Î ¹Ð¸® ¼¼ÄÁµå ´ÜÀ§ÀÌ´Ù.
contentType: º¸³»´Â µ¥ÀÌÅÍ Å¸ÀÔÀ¸·Î (request data type)
dataType: ¹Þ´Â µ¥ÀÌÅÍ Å¸ÀÔÀ¸·Î r(eesponse dataType)
jqXHR : $.ajax()¿¡ ÀÇÇØ ¹ÝȯµÇ´Â XMLHttpRequest ¿ÀºêÁ§Æ®ÀÇ »óÀ§ °´Ã¼ÀÌ´Ù.

´Ù¿î·Îµå:
/templates/test.html
controller/main_controller.py

ajax_test.zip

Âü°í)
flask jsonify ¿Í json.dumpsÀÇ Â÷ÀÌ
https: //velog.io/@matisse/flask-jsonify-¿Í-json.dumpsÀÇ-Â÷ÀÌ