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ÀÇ-Â÷ÀÌ
|