๐Ÿ“’ [ TIL ] 2022.06.15_40์ผ์ฐจ # Django Rest Framework (1)

๋ฌธ๋ช…์ฃผยท2022๋…„ 6์›” 15์ผ
0
post-thumbnail

[ 2022-06-15 (์ˆ˜) ์˜ค๋Š˜์˜ TIL ]

[ Today Learn ]

  • args, kwargs ์˜ ๋œป
  • mutable๊ณผ immutable์˜ ํŠน์„ฑ ๋ฐ ์ž๋ฃŒํ˜• ์ข…๋ฅ˜
  • DB Field์—์„œ ์‚ฌ์šฉ๋˜๋Š” Key ์ข…๋ฅ˜์™€ ํŠน์ง•

โœ๏ธ ๋‚ด๊ฐ€ ๋ฐฐ์šด๊ฒƒ, ์–ป์€๊ฒƒ

  • args, kwargs

โ“ args ๋ž€?

'๊ฐ€๋ณ€์ธ์ž'๋ฅผ ์œ„ํ•œ ๋ณ€์ˆ˜๋กœ์„œ args๋Š” ๋ณ€์ˆ˜๋ช…์ด๊ธฐ๋•Œ๋ฌธ์— ์–ด๋– ํ•œ ๋ณ€์ˆ˜๋ช…์„ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๊ด€ํ•˜๋‚˜ ์•ž์— *(๋ณ„ํ‘œ) ๋งŒ ๊ผญ ๋ถ™์—ฌ์ค˜์•ผํ•˜๋ฉฐ, ์ธ์ž์˜ ๊ฐ’์ด ํŠœํ”Œํ˜•ํƒœ๋กœ ์ €์žฅ๋œ๋‹ค. ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ• ๋•Œ ์ธ์ž๊ฐ€ ๋ช‡๊ฐœ๊ฐ€ ๋“ค์–ด์˜ฌ์ง€ ๋ชจ๋ฅด๋‚˜, ๊ฐ€๋ณ€์ธ์ž๋กœ ์ธํ•ด ๋ช‡๊ฐœ๊ฐ€ ๋“ค์–ด์™€๋„ ํ•จ์ˆ˜๋ฐœ์ƒ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค.

๐Ÿงฉ ์ ์šฉ ์˜ˆ์‹œ

def myFunc(*args):
  for arg in args:
    print(arg)
    
myFunc(10,20,'a')

[๊ฒฐ๊ณผ]
> 10
> 20
> a

โ“ kwargs ๋ž€?

args์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ '๊ฐ€๋ณ€์ธ์ž'๋ฅผ ์œ„ํ•œ ๋ณ€์ˆ˜๋กœ์„œ kwargs๋Š” ๋ณ€์ˆ˜๋ช…์ด๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋– ํ•œ ๋ณ€์ˆ˜๋ช…์„ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๊ด€ํ•˜๋‚˜ ์•ž์— *(๋ณ„ํ‘œ) 2๊ฐœ๋ฅผ ๊ผญ ๋ถ™์—ฌ์ค˜์•ผํ•˜๋ฉฐ, ์ธ์ž์˜ ๊ฐ’์ด ๋”•์…”๋„ˆ๋ฆฌํ˜•ํƒœ๋กœ ์ €์žฅ๋œ๋‹ค. ๋˜ํ•œ args์™€๋Š” ๋‹ฌ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช…์„ ๊ฐ™์ด ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿงฉ ์ ์šฉ ์˜ˆ์‹œ

def myFunc(**kwargs):
  for item in kwargs.items():
    print(item)
    
myFunc(x=100, y=200, z='b')

[๊ฒฐ๊ณผ]
> ('x', 100)
> ('y', 200)
> ('z', 'b')
  • mutable๊ณผ immutable์˜ ํŠน์„ฑ ๋ฐ ์ž๋ฃŒํ˜• ์ข…๋ฅ˜

โ“ mutable ๋ž€?
๋ณ€๊ฒฝ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋กœ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ๊ฐ๊ฐ ์ƒ์„ฑํ•ด์„œ ์ฐธ์กฐ ex)list,dict,set

โ“ immutable์˜ ๋ž€?
๋ณ€๊ฒฝ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋กœ, ๊ฐ’์ด ์กด์žฌํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋‹ค ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ ex) int,string,tuple,float,bool

  • DB Field์—์„œ ์‚ฌ์šฉ๋˜๋Š” Key ์ข…๋ฅ˜์™€ ํŠน์ง•

    - PK ๊ธฐ๋ณธํ‚ค - (1) ์†์„ฑ์ด ํ•ญ์ƒ ๊ณ ์œ ํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์•ผํ•œ๋‹ค. 
                  (2) ์†์„ฑ์ด Null ๊ฐ’์ด๋ฉด X
                  (3) ํ…Œ์ด๋ธ”์— ๊ธฐ๋ณธํ‚ค๋Š” ํ•˜๋‚˜๋งŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
     - CK ํ›„๋ณดํ‚ค - (1) ์œ ์ผ์„ฑ๋งŒ์กฑ: ํ•˜๋‚˜์˜ ํ‚ค๊ฐ’์œผ๋กœ ํ•˜๋‚˜์˜ ํŠœํ”Œ๋งŒ์„ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„
                  (2) ์ตœ์†Œ์„ฑ๋งŒ์กฑ: ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋“ค์„ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š”๋ฐ ๊ผญ ํ•„์š”ํ•œ ์†์„ฑ๋งŒ์œผ๋กœ ๊ตฌ์„ฑ
     - FK ์™ธ๋ž˜ํ‚ค - (1) ์–ด๋–ค ๋ฆด๋ ˆ์ด์…˜์— ์†Œ์†๋œ ์†์„ฑ์ด ๋‹ค๋ฅธ ๋ฆด๋ ˆ์ด์…˜์˜ ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋˜๋Š” ํ‚ค 
                  (2) ํ•˜๋‚˜์˜ ๋ฆด๋ ˆ์ด์…˜์— ์™ธ๋ž˜ํ‚ค๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Œ
                  (3) ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ธฐ๋ณธํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์™ธ๋ž˜ํ‚ค๋ฅผ ํฌํ•จํ•ด ๊ธฐ๋ณธํ‚ค๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Œ
     - AK ๋Œ€์ฒดํ‚ค - ํ›„๋ณดํ‚ค๊ฐ€ ๋‘˜ ์ด์ƒ์ผ๋•Œ ๊ธฐ๋ณธํ‚ค๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ํ›„๋ณดํ‚ค๋“ค (๋ณด์กฐํ‚ค)
     - SK ์Šˆํผํ‚ค - (1) ํ•œ ๋ฆด๋ ˆ์ด์…˜ ๋‚ด์— ์žˆ๋Š” ์†์„ฑ๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ‚ค๋กœ์„œ ๋ฆด๋ ˆ์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋“  ํŠœํ”Œ ์ค‘ ์Šˆํผํ‚ค๋กœ ๊ตฌ์„ฑ๋œ ์†์„ฑ์˜ ์ง‘ํ•ฉ๊ณผ ๋™์ผํ•œ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด์ง€ ์•Š์Œ
                  (2) ๋ชจ๋“  ํŠœํ”Œ์— ๋Œ€ํ•ด ์œ ์ผ์„ฑ์€ ๋งŒ์กฑํ•˜๋‚˜, ์ตœ์†Œ์„ฑ์€ ๋งŒ์กฑ๋˜์ง€์•Š์Œ

๐ŸŒฑ ๋Š๋‚€ ์ 

๋ณธ๊ฒฉ์ ์œผ๋กœ ์‹ฌํ™” ์žฅ๊ณ ์— ๋“ค์–ด๊ฐ€๊ธฐ์•ž์„œ Django Rest Framework์— ๋Œ€ํ•˜์—ฌ ์ˆ˜์—…์„ ๋“ฃ๋Š” ์‹œ๊ฐ„์„ ํ•œ์ฃผ๊ฐ„ ๊ฐ–๊ฒŒ๋˜์—ˆ๋Š”๋ฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ ์•Œ์•„์•ผ ํ•  ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ง€์‹๋„ ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค. ์ด ์ˆ˜์—…์„ ๋“ค์œผ๋ฉด์„œ ์ „์ฒด์ ์ธ ๊ธฐ์ˆ ์ ์ธ ๊ธฐ๋ณธ์ง€์‹์„ ์•Œ์•„๊ฐ”์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.
์ˆ˜์—…์„ ์˜ค์ „์‹œ๊ฐ„์— ๋‹ค ๋“ฃ๊ณ  ๋‚จ์€์‹œ๊ฐ„์— ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๊ธฐ ์ „ ํ•œ๋ฒˆ ๋” ๊ธฐ์ดˆ์ ์ธ ๋ถ€๋ถ„์„ ๊ฐˆ๊ณ  ๋‹ฆ๋Š” ์‹œ๊ฐ„์„ ๊ฐ–๊ณ  ์˜จ์ „ํžˆ ๋‚ด ๊ฒƒ์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ๋‹ค์Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค.

profile
ํ•˜๋ฃจ ํ•œ๊ฑธ์Œ์”ฉ ๊พธ์ค€ํžˆ ๋‚˜์•„๊ฐ€๋Š” ๊ฐœ๋ฐœ์ž๐Ÿ™†โ€โ™€๏ธ https://github.com/Moonmooj

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

comment-user-thumbnail
2022๋…„ 6์›” 15์ผ

์ž˜ ๊ณต๋ถ€ํ•ด์„œ ๋‹ค์Œ ํ”„๋กœ์ ํŠธ๋„ ํ™”์ดํŒ…ํ•˜์ฃ !!

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2022๋…„ 6์›” 15์ผ

๋ณด๊ธฐ์ข‹๊ฒŒ ์ž˜ ์ •๋ฆฌ๋˜์–ด์žˆ๋„ค์š”!! ๋ฒจ๋กœ๊ทธ๋„ ์ž˜๊พธ๋ฉฐ์„œ ์ด์œ๊ฒƒ๊ฐ™์•„์š” ๋ฐฐ์šฐ๊ณ  ๊ฐ‘๋‹ˆ๋‹ค ํ™”์ดํŒ…!!

1๊ฐœ์˜ ๋‹ต๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด