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 ์ ๊ฐ์ด ์ธ๋ฑ์ฑ ๋ฐ ์ฌ๋ผ์ด์ฑ์ด ๊ฐ๋ฅ