[Django]API & MVT

Jimin_Noteยท2022๋…„ 6์›” 1์ผ
0

๐ŸŒฑDjango

๋ชฉ๋ก ๋ณด๊ธฐ
1/13
post-thumbnail

๐Ÿ“Django

: ๋ณด์•ˆ์šฐ์ˆ˜, ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํŽธ๋ฆฌํ•œ ์›น์‚ฌ์ดํŠธ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ๊ฐœ๋ฐœํ•˜๋„๋ก ๋„์›€์„ ์ฃผ๋Š” ํŒŒ์ด์ฌ๊ธฐ๋ฐ˜์˜ ์›น ํ”„๋ ˆ์ž„์›Œํฌ

๐Ÿ“ Django Workflow

Client : ์›น ๋ธŒ๋ผ์šฐ์ € ๋ฐ ๋ชจ๋ฐ”์ผ

  • Client๋ฅผ ์ด์šฉํ•˜์—ฌ ์ง์ ‘ server์— ์š”์ฒญ์„ ๋ณด๋‚ด Django๋กœ ์ž‘์„ฑํ•œ application code๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ , ์ƒ์„ฑํ•˜๊ณ , ์ˆ˜์ •ํ•˜๊ณ  ์‚ญ์ œํ•œ๋‹ค.

URLconf(urls.py) : HTTP์š”์ฒญ์„ ๋ถ„์„

View(view.py) : ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง / ์š”์ฒญ์„ ์ฒ˜๋ฆฌ

Model(models.py) : ๋ฒˆ์—ญ๊ฐ€ ์žฌ์งˆ / ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํ†ต์‹ 

ORM : MYSQL๊ณผ ํŒŒ์ด์ฌ์˜ ์†Œํ†ต์„ ๋„์™€์คŒ

  • ์œ ์ €์˜ ๊ณ„์ •๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณต
  • ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๊ฒŒํ•˜๋Š” ๋””์ž์ธ ์›์น™๋“ค๊ณผ ํŒจํ„ด๋“ค์„ ์ด์šฉํ•˜์—ฌ ์ž‘์„ฑ
  1. ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ๋ถ€ํ„ฐ HTTP ์š”์ฒญ์„ ๋ฐ›์•„ URL๊ณผ POST ๋ฐ์ดํ„ฐ ๋˜๋Š” GET ๋ฐ์ดํ„ฐ์˜ ์ •๋ณด์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์š”๊ตฌ์‚ฌํ•ญ์„ ์•Œ์•„๋ƒ„
  2. ๊ทธ ๋‹ค์Œ ๋ฌด์—‡์ด ํ•„์š”ํ•œ ์ง€์— ๋”ฐ๋ผ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ณ , ๋˜๋Š” ํ•„์š”ํ•œ ๋‹ค๋ฅธ ์ž‘์—…๋“ค์„ ์ˆ˜ํ–‰
  3. ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์‘๋‹ต(Response)์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, ์ฃผ๋กœ ๋™์ ์ธ HTML ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜๋ฉด์„œ ์‘๋‹ต

MVT(Model View Template)

URLs(HTTP์š”์ฒญ์„ ๋ถ„์„)

  • ๋‹จ์ผ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ชจ๋“  URL ์š”์ฒญ์ฒ˜๋ฆฌ
  • ๋ถ„๋ฆฌ๋œ ๋ทฐ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ๊ฐ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์ข‹์Œ
  • URL mapper(urls.py๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ์ผ์— ์ €์žฅ๋˜์–ด์žˆ์Œ)๋Š” ์š”์ฒญ URL์„ ๊ธฐ์ค€์œผ๋กœ HTTP ์š”์ฒญ์„ ์ ์ ˆํ•œ view๋กœ ๋ณด๋‚ด๋ฉฐ URL์— ๋‚˜ํƒ€๋‚˜๋Š” ํŠน์ •ํ•œ ๋ฌธ์ž์—ด์ด๋‚˜ ์ˆซ์ž์˜ ํŒจํ„ด์„ ์ผ์น˜์‹œ์ผœ ๋ฐ์ดํ„ฐ๋กœ์„œ view ํ•จ์ˆ˜์— ์ „

View(๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์œ ์ €์—๊ฒŒ ๋ณด์—ฌ์คŒ)

  • HTTP ์š”์ฒญ์„ ์ˆ˜์‹  / HTTP ์‘๋‹ต์„ ๋ฐ˜ํ™˜
  • Model์„ ํ†ตํ•ด ์š”์ฒญ์„ ์ถฉ์กฑ์‹œํ‚ค๋Š”๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ
  • Template์—๊ฒŒ ์‘๋‹ต์˜ ์„œ์‹ ์„ค์ •์„ ๋งก๊น€

Models (์•ˆ์ „ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ ์ €์žฅ)

  • ์‘์šฉํ”„๋กœ๊ทธ๋žจ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ •์˜ / ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ๋ก์„ ๊ด€๋ฆฌ(์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ) / ์ฟผ๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ํŒŒ์ด์ฌ ๊ฐ์ฒด

Templates (์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ๊ณผ ์ด๋ฒคํŠธ์— ๋ฐ˜์‘ํ•˜์—ฌ Model๊ณผ View๋ฅผ ์—…๋ฐ์ดํŠธ)

  • ํŒŒ์ผ์˜ ๊ตฌ์กฐ๋‚˜ ๋ ˆ์ด์•„์›ƒ์„ ์ •์˜ํ•˜๊ณ (์˜ˆ: HTML ํŽ˜์ด์ง€ -> ๊ผญ HTMLํŒŒ์ผ์ผ ํ•„์š”๋Š” x), ์‹ค์ œ ๋‚ด์šฉ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ”Œ๋ ˆ์ด์Šคํ™€๋”๋ฅผ ๊ฐ€์ง„ ํ…์ŠคํŠธ ํŒŒ์ผ
  • View๋Š” HTML ํƒฌํ”Œ๋ฆฟ์„ ์ด์šฉํ•˜์—ฌ ๋™์ ์œผ๋กœ HTML ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ณ  Model์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋กœ ์ฑ„์›Œ๋„ฃ์Œ

https://aws.amazon.com/ko/what-is/api/
https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Introduction

profile
Hello. I'm jimin:)

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