๐Ÿ“– Django ๊ณต๋ถ€ 1์ผ์ฐจ

๊น€ํƒœ์ธยท2022๋…„ 5์›” 26์ผ
0

Django

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

์šฉ์–ด - ํด๋ผ์ด์–ธํŠธ / ์„œ๋ฒ„ / API ๊ฐœ๋…

-ํด๋ผ์ด์–ธํŠธ : ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ณณ (๋‚˜, ๋‚ด์ปดํ“จํ„ฐ, ํฌ๋กฌ๋“ฑ์„ ํด๋ผ์ด์–ธํŠธ๋ผ๊ณ  ํ•จ)

-์„œ๋ฒ„ : ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์‘๋‹ตํ•ด ์ฃผ๋Š” ๊ณณ (์ธํ„ฐ๋„ท์—์„œ ํ–‰๋™์„ ํ•˜๊ณ  ๋‚œ ํ›„์— ์ด๋ค„์ง€๋Š” ๋งŽ์€ ๊ณผ์ •์„ ์ฒ˜๋ฆฌํ•จ ex: ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ, ๊ธ€ ์ž‘์„ฑ ๋“ฑ)

-API : ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฃผ๊ณ  ๋ฐ›์„์ง€๋ฅผ ์ •ํ•œ ์•ฝ์†

์›น์˜ ๋™์ž‘ ๊ตฌ์กฐ

  • ํŽ˜์ด์ง€๋ฅผ ๋ฐ›๋Š” ๊ฒฝ์šฐ :
    HTML, CSS, Javascrip๊ฐ€ ์„ž์—ฌ์žˆ๋Š” ํŽ˜์ด์ง€ (๊ตฌ๊ธ€, ๋„ค์ด๋ฒ„ ๋“ฑ)

  • ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ›๋Š” ๊ฒฝ์šฐ :
    ํŽ˜์ด์ง€๋‚˜ ํ™”๋ฉด์€ ํ•„์š” ์—†๊ณ  ๋ฐ์ดํ„ฐ๋งŒ ํ•„์š” (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ž๋ฃŒ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋“ฑ)

Python ๊ธฐ์ดˆ ๋ฌธ๋ฒ• (ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐํƒ€์ž…)

  • ๋ณ€์ˆ˜๋ž€?

    ๋ณ€์ˆ˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š” ๋ฐ”๊ตฌ๋‹ˆ
ex)
my_name = "taein"
my_lang = "Python"

(์™ผ์ชฝ์€ ๋ณ€์ˆ˜, ์˜ค๋ฅธ์ชฝ์€ ๋ณ€์ˆ˜์— ์ €์žฅํ•  ๊ฐ’)
  • ์ˆซ์žํ˜•?

    ๋ณ€์ˆ˜์— ๋“ค์–ด๊ฐ„ ๊ฐ’์ด ์ˆซ์ž์ผ๋•Œ
ex)
num1 = 1234
num2 = -500

pi = 3.14
num4 = 12.34

(์ •์ˆ˜, ์†Œ์ˆ˜ ๊ฐ€๋Šฅ)
  • ๋ฌธ์žํ˜•?

    ๋ณ€์ˆ˜์— ๋“ค์–ด๊ฐ„ ๊ฐ’์ด ๋ฌธ์ž์ผ๋•Œ (์ž‘์€ ๋”ฐ์˜ดํ‘œ('') ํ˜น์€ ํฐ๋”ฐ์˜ดํ‘œ("")๋กœ ๋ฌถ์—ฌ์žˆ์Œ)
ex)
my_name = 'kim'
num_string = '123'
  • ๋ฆฌ์ŠคํŠธ?

    ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋“ฏ์ด ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ
    ๋Œ€๊ด„ํ˜ธ[] ๋กœ ๋ฌถ์—ฌ์žˆ๊ณ  ์ฝค๋งˆ(,)๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ถ„ํ•จ
ex)
a = ['a', 'b', 'c', 'd']
  1. ๋ฆฌ์ŠคํŠธ์˜ index ๋Š” 0๋ฒˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•จ
  2. ๋ฆฌ์ŠคํŠธ ์ถ”๊ฐ€ํ•˜๊ธฐ (๋ณ€์ˆ˜.append('๋‚ด์šฉ')
a.append('e')
  • ๋”•์…”๋„ˆ๋ฆฌ

    ๋Œ€์‘ ๊ด€๊ณ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒํ˜• 'ํ‚ค'-'๊ฐ’'์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์Œ
ex)
my_var = {'name':'kim', 'age':'35'}

Python ๊ธฐ์ดˆ ๋ฌธ๋ฒ• -2 (์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ˜๋ณต๋ฌธ)

  • ์กฐ๊ฑด๋ฌธ (if)
    ์ฝ”๋“œ์—์„œ ๋ณ€ํ™”๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋Š” ์š”์†Œ ('์ฐธ' /' ๊ฑฐ์ง“' ์„ ํŒ๋‹จ)
ex)
if ์กฐ๊ฑด:
	์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด ์‹คํ–‰
else:
	์กฐ๊ฑด์ด ๊ฑฐ์ง“์ด๋ฉด ์‹คํ–‰

<์กฐ๊ฑด ๋น„๊ต์—ฐ์‚ฐ์ž>

x < y ---> x๊ฐ€ y๋ณด๋‹ค ์ž‘๋‹ค
x > y ---> x๊ฐ€ y๋ณด๋‹ค ํฌ๋‹ค
x == y ---> x๊ฐ€ y์™€ ๊ฐ™๋‹ค
x != y ---> x๊ฐ€ y์™€ ๊ฐ™์ง€ ์•Š๋‹ค
x >= y ---> x๊ฐ€ y๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค
x <= y ---> x๊ฐ€ y๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค

  • ๋ฐ˜๋ณต๋ฌธ (for)
    ๋ฐ˜๋ณต๋ฌธ์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋น„์Šทํ•œ ์ž‘์—…์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰ํ•ด ์ฃผ๋Š” ๊ตฌ๋ฌธ
ex)
for ๋ณ€์ˆ˜ in ๋ฆฌ์ŠคํŠธ:
	์‹คํ–‰ ํ•  ๋ฌธ์žฅ

Python ๊ธฐ์ดˆ ๋ฌธ๋ฒ• -3 (ํ•จ์ˆ˜์™€ ํด๋ž˜์Šค)

  • ํ•จ์ˆ˜
    ์ƒˆ๋กœ์šด ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค์–ด์คŒ
ex)
def ํ•จ์ˆ˜๋ช…('๋งค๊ฐœ๋ณ€์ˆ˜'):
	์‹คํ–‰ ํ•  ๋ฌธ์žฅ๋“ค
ex)
def my_sum(a, b): #a, b๋Š” ๊ณผ์ผ
    result = a + b # ์ถœ๋ ฅํ•  ๊ฒฐ๊ณผ
    return result # ์ €์žฅํ•  ๊ฒฐ๊ณผ

a = my_sum(50, 60) #ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œ์ผœ ๊ณผ์ผ(๊ฐ’)์„ ๋„ฃ์–ด ์ถœ๋ ฅ ํ›„ ๋ณ€์ˆ˜์— ์ €์žฅ

print(a) #์ถœ๋ ฅ
  • ํด๋ž˜์Šค
    ๋นต ํ‹€ -> ํด๋ž˜์Šค
    ๋นต ํ‹€์— ์˜ํ•ด ๋‚˜์˜จ ๋จธํ•€ -> '๊ฐ์ฒด' ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Œ

class marine: #ํด๋ž˜์Šค ์„ ์–ธ
	hp = '' #ํด๋ž˜์Šค ์†์„ฑ(ํŠน์ง•)
    attack = '' #ํด๋ž˜์Šค ์†์„ฑ(ํŠน์ง•)
    speed = '' #ํด๋ž˜์Šค ์†์„ฑ(ํŠน์ง•)
    
marine1 = marine() #marin1์ด๋ผ๋Š” ๋ณ€์ˆ˜์— marineํด๋ž˜์Šค ๋Œ€์ž…
marine.hp = '20' #์†์„ฑ ์ž…๋ ฅ
marine.attack = '5' #์†์„ฑ ์ž…๋ ฅ
marine.speed = '3' #์†์„ฑ ์ž…๋ ฅ

print(marine1) #๋ณ€์ˆ˜ ์ถœ๋ ฅ

# <__main__.marine object at 0x104569100> ๊ฐ์ฒด ์ถœ๋ ฅ ํ˜•ํƒœ **(Object)**

print(marine1.hp) #์†์„ฑ ์ถœ๋ ฅ
print(marine1.attack) #์†์„ฑ ์ถœ๋ ฅ
print(marine.speed) #์†์„ฑ ์ถœ๋ ฅ

Python์˜ Web Framework!?

  • ํŒŒ์ด์ฌ ์›นํ”„๋ ˆ์ž„์›Œํฌ
    ๐Ÿ‘‰ ๊ฐœ๋ฐœ์„ ๋„์™€์ฃผ๋Š” ํ•˜๋‚˜์˜ ํˆด
    ๋น„์Šทํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ‹€์— ๋งž์ถฐ ์ผ์ •ํ•œ ํ˜•ํƒœ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์žฅ์ 

  • ํŒŒ์ด์ฌ ์›นํ”„๋ ˆ์ž„์›Œํฌ ์ข…๋ฅ˜
    Flask, Pyramid (์ตœ์†Œํ•œ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณต ์ฒ ํ•™์„ ๊ฐ€์ง€๊ณ ์žˆ์Œ)
    Django (๋งŽ์€ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•˜๊ณ ์žˆ์Œ)

Django VS Flask Pyramid

DjangoFlask,Pyramid
๊ฑฐ๋Œ€ํ•œ ํ”„๋ ˆ์ž„ ์›Œํฌ๊ฒฝ๋Ÿ‰ ํ”„๋ ˆ์ž„์›Œํฌ
๋งŽ์€ ์œ ํ‹ธ(๊ธฐ๋Šฅ) ์ œ๊ณต์ตœ์†Œํ•œ์˜ ๊ธฐ๋Šฅ ์ œ๊ณต
DB, ๋กœ๊ทธ์ธ, Admin, ํŒจ์Šค์›Œ๋“œ ์•”ํ˜ธํ™” ๋“ฑ ์ œ๊ณต๋กœ๊ทธ์ธ, DB๋“ฑ ๊ด€๋ฆฌ ์ง์ ‘ ํ•ด์•ผํ•จ
์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ๋ฌธ์„œ ์ž˜๋˜์žˆ์Œ๊ด€๋ฆฌ์žํŽ˜์ด์ง€ ๊ตฌ์ถ• ๋ณ„๋„

Django ์‚ดํŽด๋ณด๊ธฐ

  • ์žฅ๊ณ ์˜ MVT ํŒจํ„ด

  • M (Model)
    ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ๋ชจ๋ธ(ORM)
    ์ €์žฅ๋˜๊ณ  ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•ํƒœ

  • T (Template)
    ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ๋ถ€๋ถ„
    ํ™”๋ฉด

  • V (View)
    ์‹ค์งˆ์  ํ”„๋กœ๊ทธ๋žจ ๋™์ž‘ ๋ถ€๋ถ„
    url ์š”์ฒญ -> ์‘๋‹ตํ•˜๋Š” ์‚ฌ์ด์— ์ผ์–ด๋‚˜๋Š” '์„œ๋น„์Šค'๋“ค์ด ์กด์žฌํ•˜๋Š” ๊ณณ

  • ORM์ด ๋ญ”๋ฐ?

    Django ์˜ ORM์€ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ํ˜•ํƒœ๋ฅผ Class๋กœ ๋‚˜ํƒ€๋‚ด์คŒ
    ORM์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ฃจ๊ธฐ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” '์ฟผ๋ฆฌ'๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋จ

ex) ์žฅ๊ณ ์˜ ๋Œ€ํ‘œ ORM Class

Class Post:
	id = intergerField()
    title = CharField()
    author = CharField()
    context = textField()
profile
์ฝ”๋”ฉ์ด ์ทจ๋ฏธ๊ฐ€ ๋˜๋Š” ๊ทธ๋‚ ๊นŒ์ง€

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