๐Ÿ‘ฆ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„/TIL(Today I Learned)

TIL_220615_DRF ๊ฐ•์˜

  • -

django 1~2์ผ์ฐจ ๊ณผ์ œ

 

(1) args, kwargs๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ ์ฝ”๋“œ ์งœ๋ณด๊ธฐ

*args : ๊ฐ€๋ณ€ ์ธ์ž (ํ•จ์ˆ˜์˜ ์ธ์ž๋ฅผ ๋ช‡ ๊ฐœ ๋ฐ›์„์ง€ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ)

- ์ดˆ๊ธฐ ๋กœ์ง(์ง์ ‘ ์งœ๋ณธ ๊ฒƒ)

def test_1(*args):
    print(args)
    return args
    
sample_list = [1, 2, 3, 4, 5]
number = test_1(*sample_list)

for i in number:
	print(i + 1)

- ๊ฐœ์„  ๋กœ์ง(๊ตฌ๊ธ€๋ง)

def test_1(*args):
	result = 0
    
for i in args:
	result += i
# result = 1
# result = 1 + 2
# result = 1 + 2 + 3
# result = 1 + 2 + 3 + 33
	print(result)

test_1(1, 2, 3, 33)

 

**kwargs : args ์™€ ๊ฐ™์œผ๋ฉด์„œ๋„ ๋‹ค๋ฅธ, ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ์˜ ๊ฐ’ ์ „๋‹ฌ

def test_2(**kwargs):
	print(kwargs)

test_2(name="ํ™๊ธธ๋™", age="20")

# {'key' : 'value'}
# name, age = key
# "ํ™๊ธธ๋™", "20" = value

 


 

(2) mutable๊ณผ immutable์€ ์–ด๋–ค ํŠน์„ฑ์ด ์žˆ๊ณ , ์–ด๋–ค ์ž๋ฃŒํ˜•์ด ์–ด๋””์— ํ•ด๋‹นํ•˜๋Š”์ง€ ์„œ์ˆ ํ•˜๊ธฐ

mutable : ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
- ์ž๋ฃŒํ˜• : ๋ฆฌ์ŠคํŠธ, ๋”•์…”๋„ˆ๋ฆฌ, ์ง‘ํ•ฉ
immutable : ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ
- ์ž๋ฃŒํ˜• : ์ •์ˆ˜, ์‹ค์ˆ˜, ๋ฌธ์ž์—ด, ํŠœํ”Œ

 

immutable ์˜ˆ์‹œ)

a์˜ ์ „์—ญ๋ณ€์ˆ˜ ์„ ์–ธ
a = 1
def var(a):
	a = a + 1
    var(a)
    print(a)

 


 

(3) DB Field์—์„œ ์‚ฌ์šฉ๋˜๋Š” Key ์ข…๋ฅ˜์™€ ํŠน์ง• ์„œ์ˆ ํ•˜๊ธฐ

key : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” ํŠœํ”Œ์„ ์ฐพ๊ฑฐ๋‚˜ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•  ๋•Œ ๋‹ค๋ฅธ ํŠœํ”Œ๋“ค๊ณผ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๊ธฐ์ค€์ด ๋˜๋Š” ์†์„ฑ

 

FK : Foreign Key(์™ธ๋ž˜ํ‚ค)

  • ์ฐธ์กฐ๋˜๋Š” ๋ฆด๋ ˆ์ด์…˜์˜ ๊ธฐ๋ณธํ‚ค์™€ ๋Œ€์‘๋˜์–ด ๋ฆด๋ ˆ์ด์…˜ ๊ฐ„์— ์ฐธ์กฐ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ์ค‘์š”ํ•œ ๋„๊ตฌ
  • ์™ธ๋ž˜ํ‚ค๋กœ ์ง€์ •๋˜๋ฉด ์ฐธ์กฐ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค์— ์—†๋Š” ๊ฐ’์€ ์ž…๋ ฅํ•  ์ˆ˜ ์—†์Œ

UK : Unique Key

  • PK(์™ธ๋ž˜ํ‚ค) ์™€ ์œ ์‚ฌํ•˜๋‚˜ NULL ๊ฐ’์„ ์ค‘๋ณต ํ—ˆ์šฉํ•จ
  • ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ํ•ด๋‹น ์ปฌ๋Ÿผ ๊ฐ’์€ ํ•ญ์ƒ ์œ ์ผ
  • ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ์—ฌ๋Ÿฌ๋ฒˆ ์ง€์ • ๊ฐ€๋Šฅ

PK : Primary Key(๊ธฐ๋ณธํ‚ค)

  • ํŠน์ • ํŠœํ”Œ์„ ์œ ์ผํ•˜๊ฒŒ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ
  • Null ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Œ
  • ๋™์ผํ•œ ๊ฐ’์ด ์ค‘๋ณต๋˜์–ด ์ €์žฅ๋  ์ˆ˜ ์—†์Œ

CK : Candidate Key(ํ›„๋ณดํ‚ค)

  • ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ๋“ค์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ์˜๋ฏธ
  • ๋ชจ๋“  ๋ฆด๋ ˆ์ด์…˜์€ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ›„๋ณดํ‚ค๋ฅผ ๊ฐ€์ ธ์•ผ ํ•จ
  • ์œ ์ผ์„ฑ๊ณผ ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑ์‹œ์ผœ์•ผ ํ•จ

AK : Alternate Key(๋Œ€์ฒดํ‚ค)

  • CK ๊ฐ€ ๋‘˜ ์ด์ƒ์ผ ๋•Œ ๊ธฐ๋ณธํ‚ค๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ CK
  • ๋ณด์กฐํ‚ค๋ผ๊ณ ๋„ ํ•จ

SK : Super Key(์Šˆํผํ‚ค)

  • ์Šˆํผํ‚ค๋Š” ํ•œ ๋ฆด๋ ˆ์ด์…˜ ๋‚ด์— ์žˆ๋Š” ์†์„ฑ๋“ค์˜ ์ง‘ํ•ฉ
  • ์œ ์ผ์„ฑ์€ ๋งŒ์กฑํ•˜์ง€๋งŒ, ์ตœ์†Œ์„ฑ์€ ๋งŒ์กฑ์‹œํ‚ค์ง€ ๋ชปํ•จ

 

 


 

(4) django์—์„œ queryset๊ณผ object๋Š” ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ์„œ์ˆ ํ•˜๊ธฐ

Queryset

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ „๋‹ฌ๋ฐ›์€ ๊ฐ์ฒด๋“ค์˜ ๋ชจ์Œ(list)
  • DB(SQL) ์—์„œ๋Š” row ์— ํ•ด๋‹น
  • DB์˜ ๊ฐ์ฒด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” iterate ์‹œ์ผœ์•ผ ํ•œ๋‹ค.
  • for account in account_set:
    print(account.name)

queryset๊ณผ object๋Š” ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€?

  • object ๋ฉ”์„œ๋“œ์™€ all() ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด queryset() ๋ฆฌ์ŠคํŠธ์˜ value ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค.
  • Queryset ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ „๋‹ฌ๋ฐ›์€ ๊ฐ์ฒด๋“ค์˜ ๋ชจ์Œ(list)
  • object ๋Š” Queryset ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด(ORM)

object ์ข…๋ฅ˜

  • object.all() : ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ด
  • object.filter() : ํŠน์ • ๋ฐ์ดํ„ฐ๋กœ ํ•„ํ„ฐ๋ง(ํ•„๋“œ๋ช…=์กฐ๊ฑด๊ฐ’)ํ•ด์„œ ๊ฐ€์ ธ์˜ด
  • object.exclude() : ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์™ธํ•œ(ํ•„๋“œ๋ช…=์กฐ๊ฑด๊ฐ’) ๋‚˜๋จธ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ด
  • object.get() : ํ•„๋“œ๋ช…=์กฐ๊ฑด๊ฐ’ ์„ ์ธ์ž๋กœ ๊ฐ€์ ธ, ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ผํ•˜๊ฒŒ ์กด์žฌํ•ด์•ผ ํ•จ
  • object.first() : ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ด
  • object.last() : ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ด
  • object.index(), slice() : python ์˜ list ์™€ ๊ฐ™์ด ์ธ๋ฑ์‹ฑ ๋ฐ ์Šฌ๋ผ์ด์‹ฑ์ด ๊ฐ€๋Šฅ
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.