[SK shiedlus Rookies 23]Python(7-2)_24.10.23

๋ฐ•์†Œ๋ฏผยท2024๋…„ 11์›” 5์ผ

Python

๋ชฉ๋ก ๋ณด๊ธฐ
22/23

ํŒŒ์ด์ฌ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • ๋ชฉ์ 
    • ๐Ÿ’ฅ์›น ์„œ๋น„์Šค ๊ตฌ์„ฑ
    • ๐Ÿ’ฅํ–ฅํ›„ ๋ณด์•ˆ ์ฒ˜๋ฆฌ์‹œ ๋Œ€์ƒ์ด ๋˜๋Š” ์„œ๋น„์Šค ๊ตฌํ˜„
  • ํ”„๋ ˆ์ž„์› (๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํŒจํ‚ค์ง€)
  1. django
     a. ๋ฌด๊ฒ๋‹ค, ๋Œ€๋ถ€๋ถ„ ํ•„์š”ํ•œ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋‹ค
     b. spring/spring boot์™€ ์œ ์‚ฌํ•œ ํฌ์ง€์…˜
  1. ๐Ÿ’ฅ flask
     a. ์œ ์—ฐํ•˜๋‹ค, ์‰ฝ๋‹ค
     b. node์™€ ์œ ์‚ฌํ•œ ํฌ์ง€์…˜
  1. fastapi
     a. ๊ฐ€์žฅ ๋น ๋ฅด๋‹ค 
     b. ๊ฐ€์žฅ ์ตœ์‹ ์— ๋‚˜์˜จ ํ”„๋ ˆ์ž„์›

๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•

  1. ํŒŒ์ด์ฌ ์„ค์น˜
  2. ๊ฐ€์ƒํ™˜๊ฒฝ ๊ตฌ์ถ• : secret.py
        โ†ช๏ธ if ๊ฐ€์ƒํ™˜๊ฒฝ ์—†์–ด๋„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅ..
  3. ์„ค์น˜ ํŒจํ‚ค์ง€ ๊ตฌ์„ฑ
    • ํŒŒ์ผ๋ช… : requirement.txt
  4. ํŒจํ‚ค์ง€ ์„ค์น˜
    • (secret.py) ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ > pip install -r requirement.txt

๊ฐœ๋ฐœ

  1. ๊ธฐ๋ณธ ๊ณจ๊ฒฉ ํ•„์š”

  2. data ์ „์†ก ๋ฐฉ์‹

    • get ๋ฐฉ์‹
    • post ๋ฐฉ์‹
    • ๋™์  ํŒŒ๋ผ๋ฏธํ„ฐ
  3. ํ™”๋ฉด ๋žœ๋”๋ง

    • ๐Ÿ’ฅSSR (Server Side Rendering) โ‰  CSR (Client Side Rendering)
    • ํ…œํ”Œ๋ฆฟ ์—”์ง„ : Jinja2 ์‚ฌ์šฉ
  4. DB์—ฐ๋™

    • flask ๐Ÿ” pymysql ๐Ÿ” mariadb

๊ธฐ๋ณธ๊ณจ๊ฒฉ (flask๋ฅผ ์ด์šฉํ•œ ๋ผˆ๋Œ€ ๊ตฌ์„ฑ)

  • web > basic > f1.py

1. ๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ

from flask import Flask   #โ“ Flask ๋ชจ๋“ˆ์—์„œ flask๊ฐ์ฒด ๊ฐ€์ ธ์˜ค๊ธฐ

2. ์•ฑ์ƒ์„ฑ

app = Flask(__name__)  #โ“ (__name__) ํ•ด์„ = โœ”"__main__" or ํŒŒ์ผ๋ช…

3. ๋ผ์šฐํŒ…

  • ๋ผ์šฐํŒ… โžœ ์š”์ฒญ url ํ•ด์„ โžœ ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ์ฒ˜๋ฆฌํ• ์ง€ โžœ ๊ด€๋ จ ํ•จ์ˆ˜ ํ˜ธ์ถœ
    โ†ช๏ธ ( โ‰’ ์ „ํ™” )
@app.route('/')  #โ“ URL โฌ…๏ธ (*๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ฅผ ํ†ตํ•ด Url, method๋ฐฉ์‹ ์ •์˜๋จ.)
def home():
	return 'hello flask' #๋ฌธ์ž์—ด์„ ์‘๋‹ต

4. ์„œ๋ฒ„๊ฐ€๋™

if__name__=='__main__':  #โ“ ์—”ํŠธ๋ฆฌํฌ์ธํŠธ ์ฝ”๋“œ ์ง„์ž…๋กœ/์‹œ์ž‘์ /๋ฉ”์ธ
	app.run()

  • ์„œ๋ฒ„ ์ค‘๋‹จ ctrl + c

์ฝ”๋“œ ์ˆ˜์ • ์‹œ ์ž๋™ ์žฌ๊ฐ€๋™ ์ธ์ง€

  • app.run(debug=True)
from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
	return 'hello flask2'  #โ“ ์ฝ”๋“œ ์ˆ˜์ • 

if__name__=='__main__':
	app.run(debug=True)  #โ“ ์ฝ”๋“œ ์ˆ˜์ • ์ž๋™ ์ธ์ง€ ํ›„ ์„œ๋ฒ„ ์ž๋™ ์žฌ๊ฐ€๋™ โžœ ์ƒˆ๋กœ๊ณ ์นจ 


1. ๋ผ์šฐํŠธ ํ‘œํ˜„ ์ถ”๊ฐ€ (URL์ถ”๊ฐ€)

  • Ex > ~/users/login
from flask import Flask

app = Flask(__name__)

# ํ•จ์ˆ˜๋ช…์€ ๋™์ผ *.py ๋‚ด๋ถ€์—์„œ๋Š” ๊ณ ์œ ํ•ด์•ผํ•œ๋‹ค.
@app.route('/users/login')  #โ“ url์ถ”๊ฐ€ ํŒŒํŠธ
def home():
	return '๋กœ๊ทธ์ธ ํŽ˜์ด์ง€'   #โ“ ํ•œ๊ธ€ ์ •์ƒ ์ถœ๋ ฅ  

if__name__=='__main__':
	app.run(debug=True)   #โ“ ์„œ๋ฒ„ ์ž๋™ ์žฌ๊ฐ€๋™

2. ๋™์  ํŒŒ๋ผ๋ฏธํ„ฐ

[[ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ์‹ _2๊ฐ€์ง€ ]]
1. method : client์˜ ์ž…๋ ฅ ์ •๋ณด๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๋Š” ๋ฐฉ์‹
2. ๋™์  ํŒŒ๋ผ๋ฏธํ„ฐ : url์— ๋ฐ์ดํ„ฐ๋ฅผ ์„ธํŒ…ํ•˜์—ฌ ์ „์†ก

  • ex. ๋„ค์ด๋ฒ„ ๋‰ด์Šค- ๊ธฐ์‚ฌ(๋‰ด์Šค)๋ฒˆํ˜ธ ์ „์†ก
           โ›” ๋ณด์•ˆ์ƒ ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์ „์†ก (๋ณด์•ˆ์— ์ทจ์•ฝ)
  1. ์ข…๋ฅ˜
    • get๋ฐฉ์‹
    • post๋ฐฉ์‹
    • put๋ฐฉ์‹

Ex.01 > ๋ฌธ์ž์—ด ์ „๋‹ฌ

@app.route('/news/<news_id>')
def news():
	return f'์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ {news_id}'

if__name__=='__main__':
	app.run(debug=True)

Url: ๋ฐ์ดํ„ฐ/news/๋ฐ์ดํ„ฐ

  • ๋ฐ์ดํ„ฐ n๊ฐœ ์ด์ƒ ์ „๋‹ฌ๊ฐ€๋Šฅ
@app.route('/<auth>/news2/<news_id>')
def news2(auth, news_id):
	return f'์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ {auth} {news_id}'

if__name__=='__main__':
	app.run(debug=True)

ํƒ€์ž… ๋ถ€์—ฌ

  • int, float,, path(flask์—์„œ๋งŒ ๋‚˜์˜ค๋Š” ํ˜•์‹)
@app.route('/news3/<int:news_id>')
def news2(auth, news_id):
	return f'์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ {news_id}'

if__name__=='__main__':
	app.run(debug=True)

  • path
@app.route('/news4/<path:news_id>')
def news2(auth, news_id):
	return f'์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ {news_id}'

if__name__=='__main__':
	app.run(debug=True)

Url: ๋ฐ์ดํ„ฐ ๋ฐฐ์—ด

  • path ํƒ€์ž… + f'์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ%s' % news_id.split('/')
@app.route('/news4/<path:news_id>')
def news2(auth, news_id):
	return f'์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ%s' % news_id.split('/')

if__name__=='__main__':
	app.run(debug=True)

0๊ฐœ์˜ ๋Œ“๊ธ€