PythonCGI

python CGI CGI๋Š” Common Gateway Interface์˜ ์•ฝ์ž๋‹ค. web application์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋Š” ruby, java, php ๋“ฑ ๋‹ค์–‘ํ•˜์ง€๋งŒ ๋ชจ๋‘ CGI ๊ทœ์•ฝ์„ ๋”ฐ๋ผ web server์™€ ํ†ต์‹ ํ•œ๋‹ค. web server๋Š” ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ์•ฝ์†๋œ ์ด๋ฆ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ web application์— ์ „๋‹ฌํ•˜์—ฌ ์„œ๋กœ ๊ต๋ฅ˜ํ•œ๋‹ค. apache์—์„œ python์„ ์ด์šฉํ•ด web application์„ ๋งŒ๋“ค์–ด web server์™€ ํ†ต์‹ ํ•ด ๋ณด์ž. $ a2enmod CGI ๋ช…๋ น์œผ๋กœ apache์˜ CGI๋ฅผ ์ผœ ์ฃผ๊ณ , sudo service apache2 restart ๋กœ ์„ค์ • ์ ์šฉ /var/log/apache2/error.log ์•ˆ์— apache ์‹คํ–‰์‹œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ ๋กœ๊ทธ๊ฐ€ ๋‹ด๊ฒจ์žˆ๋‹ค. ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ์„œ๋ฒ„์— ์š”์ฒญํ•  ๋•Œ ์›น ์„œ๋ฒ„๋Š” ์‘๋‹ต์œผ๋กœ ์›น ํŽ˜์ด์ง€์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…(ํ—ค๋”)์™€ ํ•จ๊ป˜ ์›น ํŽ˜์ด์ง€๋ฅผ ์ „์†กํ•œ๋‹ค. python CGI๋กœ๋Š” print("content-type:text/html; charset=UTF-8\n") ์™€ ๊ฐ™์ด ํ—ค๋”๋ฅผ ํ‘œ๊ธฐ๋‚ธ๋‹ค. ํ—ค๋”๋ฅผ ์ถœ๋ ฅํ•œ ๋‹ค์Œ ๋ถ€ํ„ฐ๋Š” body ๋ถ€๋ถ„์ด ์ถœ๋ ฅ๋œ๋‹ค. ํŠน์ • ์ฃผ์†Œ๋กœ Redirection์„ ํ•  ๋•Œ์—๋Š” print("location : index.py?id=title")์„ ์ด์šฉํ•œ๋‹ค. ( โ€˜:โ€™ ์ดํ›„ ๋ถ€ํ„ฐ โ€˜"โ€™ ๊นŒ์ง€๋Š” ์›ํ•˜๋Š”๋Œ€๋กœ ์ž‘์„ฑ) formatting string์—์„œ ํŠน์ • ๋ฌธ์ž์—ด์„ ๋‹ค๋ฅธ ๋ฌธ์ž๋กœ ์น˜ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ ex) '{} {}'.format('one','tow') ex) '{a} {b}'.format(a='hello', b='world') python ํŒŒ์ผ์—์„œ ๋ฌธ์ž์—ด๊ณผ format ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋™์  html์„ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค. CGI ๋ชจ๋“ˆ import cgi ๋กœ ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•ด ์‚ฌ์šฉํ•œ๋‹ค. form = cgi.FieldStorage() form์€ jQuery์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค. ex) pageId = form['id'].value : page์˜ id๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. HTML ์—ฐ๋™ input ํƒœ๊ทธ์˜ name ์†์„ฑ : input ํƒœ๊ทธ๋ฅผ ํŠน์ • ์ด๋ฆ„์œผ๋กœ CGI์— ์ „๋‹ฌํ•จ ex) ...

<span title='2020-07-02 19:15:21 +0900 KST'>July 2, 2020</span>&nbsp;ยท&nbsp;3 min&nbsp;ยท&nbsp;AswinBlue