์ค์ ๋ก ์กด์ฌํ๋ ํ ์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ง ์๋ ๊ฐ์ ํ ์ด๋ธ์ด๋ค.ํ์ํ ๋ฐ์ดํฐ๋ง view ํ ์ด๋ธ์ ์ ์ํด์ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ๊ณ ์ฟผ๋ฆฌ๋ฌธ์ด ๊ฐ๋จํด์ง๋ค.๋งค๋ฒ ๋ณต์กํ ์ฟผ๋ฆฌ๋ฌธ์ด ์ํ๋์ง ์๊ณ , ์ด๋ฏธ ๋ง๋ค์ด์ง view ํ ์ด๋ธ์์ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์
ํ์ด์ฌ์ ๋ชจ๋/ํจํค์ง๋ฅผ ์ฐพ์ ๋sys.module -> built-in modules -> sys.path์์๋ก ์ฐพ๋๋ค.์ ๊ณผ์ ์์ ๋ชจ๋/ํจํค์ง๋ฅผ ์ฐพ์ง ๋ชปํ๋ฉด ModuleNotFoundError๋ฅผ ๋ฐํํ๋ค.์์ ๋๋ ํ ๋ฆฌ๋ ํน์ ๋๋ ํ ๋ฆฌ์ ์๋ ๋ชจ๋์ importํ ๋๋
๋ฆฌ์คํธ์์ ์ฐพ๊ณ ์ ํ๋ ๊ฐ n์ด ์์ ๋,๋ฆฌ์คํธ์ ์ค๊ฐ ๊ฐ์ด n๋ณด๋ค ์์ผ๋ฉด n์ ์ค๋ฅธ ์ชฝ์ ๊ฒ์ํ๊ณ ,์ค๊ฐ ๊ฐ์ด n๋ณด๋ค ํฌ๋ฉด n์ ์ผ์ชฝ์ ๊ฒ์ํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. ๋จ, ๋ฆฌ์คํธ๋ ์ ๋ ฌ๋ ์ํ์ฌ์ผ ํ๋ค. ๋ฆฌ์คํธ์ ์ฒ์๋ถํฐ ๋๊น์ง ๊ฒ์ํ๋ linear search๋๋ฆฌ์คํธ์
์ฟผ๋ฆฌ์ ์ ๊ฐ์ ๋์ ๋๋ฆฌ ํํ๋ก ๋ฐํํ๋ค.values() ๋ฉ์๋์ ์ธ์๋ก ํ๋๋ช ์ ๋ฃ์ผ๋ฉด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค์ง ์๊ณ {ํ๋ : ๊ฐ}์ ํํ๋ก ํ์ํ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ฌ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ญ๋นํ์ง ์์ ์ ์๋ค.arts์ ๋ด๊ธด ์ฟผ๋ฆฌ์ ์ JsonResponse ํ์์ผ๋ก
์ฟผ๋ฆฌ์ ์ ๋ฐํํ ๋ foreign-key, OneTonOneFeild ๊ด๊ณ์ธ ๋ชจ๋ธ๋ค ํจ๊ป ๊ฐ์ ธ์ค๋ ORMforeign-key, OneTonOneFeild ๊ด๊ณ์ธ ๋ชจ๋ธ๋ค์ ์บ์ฑํ๊ธฐ ๋๋ฌธ์ ์ฝ๋์์ ์ฌ์ฌ์ฉํ ๊ฒฝ์ฐ ์ถ๊ฐ์ ์ธ ์ฟผ๋ฆฌ๊ฐ ํ์ํ์ง ์๋ค.์ฟผ๋ฆฌ์ ์ ๋ฐํํ ๋ forei
๋์ ๋๋ฆฌ์ key๋ ํ๋๋ช , value๋ ๋ณ๊ฒฝํ ๊ฐ์ผ๋ก ์ค์ ํ๋ค.update ๋ฉ์๋์ (\*\*๋์ ๋๋ฆฌ ๋ณ์๋ช )์ ์ ๋ ฅํ๋ค.
์ด ๋ฉ์๋๋ (object, created) ๋ผ๋ ํํ ํ์์ผ๋ก ๋ฐํ์ ํ๋ค. ์ฒซ ๋ฒ์งธ ์ธ์(object)๋ ๊บผ๋ด๋ ค๊ณ ํ๋ ๋ชจ๋ธ์ ์ธ์คํด์ค์ด๋ค. ๋ ๋ฒ์งธ ์ธ์(created)๋ boolean flag๋ก, TRUE ๋๋ FALSE๋ฅผ ๊ฐ๊ณ ์๋ค.get_or_create ๋ฉ
์ ์์ผ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์ ์ข ๋ฅ์ค ํ๋๋ก ๋ฐ๋ณต์ ์ด๊ณ ์ ์ง์ ์ธ ๊ฐ๋ฐ๋ฐฉ๋ฒ์ ๋งํ๋ค. ๊ฐ ๋ฐ๋ณต์ฃผ๊ธฐ๊ฐ ์ข ๋ฃ๋ ๋๋ง๋ค ๋ถ๋ถ์ ์ผ๋ก ์์ฑ๋ ๊ฒฐ๊ณผ๋ฌผ์ด ๋ง๋ค์ด์ง๋ค. ๋ฐ๋ณต์ฃผ๊ธฐ๋ ์คํ๋ฆฐํธ(sprint)๋ผ๊ณ ํ๋ฉฐ ์ฃผ๋ก 1~4์ฃผ๋ก ๊ตฌ์ฑ๋๋ค.์๋ฃจ์ ์ ํฌํจํ ๊ธฐ๋ฅ/๊ฐ์ ์ ์ ๋ํ ์ฐ์ ์์๋ฅผ
Uniform Resource Locator ๋ฆฌ์์ค์ ์์น๋ฅผ ์๋ ค์ค๋ค.Uniform Resource Identifier์์ ์๋ณ์์ธํฐ๋ท์ ์๋ ๋ฆฌ์์ค๋ฅผ ๋ํ๋ด๋ ์ ์ผํ ์ฃผ์URL์ ํน์ ์์ ์ ์ด๋ค ๋ฆฌ์์ค๊ฐ ์์นํ ๊ณณ์ ์๋ ค์ค๋ค.๋ฆฌ์์ค๊ฐ ์ฎ๊ฒจ์ง๋ฉด ํด๋น URL์ ๋๋ ์ฌ
"Representational State Transfer"์ ์ฝ์์์์ ์ด๋ฆ์ผ๋ก ๊ตฌ๋ถํ์ฌ ํด๋น ์์์ ์ํ(์ ๋ณด)๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ชจ๋ ๊ฒ์ ์๋ฏธํ๋ค.์ฆ, ์์(resource)์ ํํ(representation)์ ์ํ ์ํ ์ ๋ฌ์์ - URIํ์ - HTTP meth
create()get()update()delete()exists()save()count()first()last() ๋ฑall()filter()values() ๋ฑ
๊ฐ์ธ์ ๋ณด๋ฅผ ์ํธํํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.bcrypt๋ 'str' ๋ฐ์ดํฐ๊ฐ ์๋ 'Bytes' ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ค.๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฅผ 'Bytes'๋ก ๋ฐ๊พธ์ด์ฃผ์ด์ผ ํ๋ค.ํ์ด์ฌ์์๋ 'str'์ encodeํ๋ฉด 'Bytes'๊ฐ ๋๊ณ , 'Bytes'๋ฅผ decodeํ๋ฉด 'str'์ด
์ ๊ท์์ ํน์ ํ ๊ท์น์ ๊ฐ์ง ๋ฌธ์์ด์ ์งํฉ์ ํํํ๋ ๋ฐ ์ฌ์ฉํ๋ ํ์ ์ธ์ด์ด๋ค.ํน์ ๊ฒ์ ํจํด์ ๋ํ ํ๋ ์ด์์ ์ผ์น ํญ๋ชฉ์ ๊ฒ์ํ์ฌ ํ ์คํธ์์ ์ ๋ณด๋ฅผ ์ถ์ถํ๋ ๋ฐ ์ ์ฉํ๋ค.'๊ณ์ @๋๋ฉ์ธ.์ต์์๋๋ฉ์ธ' ํ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ์ ๊ทํํ์์ด๋ค.์ฌ์ฉ๋ฒ'3์๋ฆฌ ์ซ์ - 3์
๋ชจ๋ ์ค์ ์ด ๋๋ฌ๋ค๋ฉด products/models.py์ class ๋ฑ์ ์์ฑํ๋ค.ํด๋์ค๋ช ์ ๋๋ฌธ์๋ก ์์ํ๊ณ ๋จ์๋ฅผ ์ฌ์ฉํ๋ค.ํด๋์ค๊ฐ ํ ์ด๋ธ์ด ๋๊ณ (ํด๋์ค์ด๋ฆ != ํ ์ด๋ธ์ด๋ฆ), ํด๋์ค ๋ด์ ๋ณ์๋ค์ด ํ ์ด๋ธ์ ํ๋(์ปฌ๋ผ)๊ฐ ๋๋ค.PK๋ก ์ฌ์ฉํ๋ ํ๋๋ ์๋์ผ๋ก ์์ฑ๋
manage.py ํ์ผ์ด ์กด์ฌํ๋ ๋๋ ํ ๋ฆฌ์์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅํ๋ค. ๊ทธ๋ฌ๋ฉด django๊ฐ products๋ผ๋ ์ด๋ฆ์ ํด๋์ ๊ตฌ์ฑ์์๋ค์ ๋ง๋ค์ด์ค๋ค.
ํญ์ ๊ฐ์ํ๊ฒฝ์ ์คํํ ์ํ์์ ์งํํ๋ค.ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๋, python ๋๋ django์์ ์ฌ์ฉ ์ค์ธ ์ด๋ฆ์ ํผํด์ผ ํ๋ค.ํนํ django(Django ์์ฒด์ ์ถฉ๋ ๋ฐ์)๋ test(python ํจํค์ง ์ด๋ฆ ์ค ํ๋)๊ฐ์ ์ด๋ฆ์ ํผํด์ผ ํ๋ค.ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋ฉด w
ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ธฐ ์ , ๊ฐ์ฅ ๋จผ์ ๊ฐ์ํ๊ฒฝ์ ์ค๋นํด์ผ ํ๋ค.ํ๋ก์ ํธ๋ง๋ค ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์๋ฒ์ ๋ผ๋ฆฌ ์ถฉ๋์ ๋ฐฉ์งํ๊ณ , ๋ถํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ์ํด๊ฐ์ํ๊ฒฝ์ ์ฌ์ฉํ๋ค.๊ฐ์ํ๊ฒฝ์ ์คํํ ํ, ํ์ํ ๊ฒ๋ค์ ์ค์นํด์ค๋ค.ex)mysql, mys
์์ ๊ฐ์ ๊ตฌ์กฐ์ package๋ฅผ ์์ฑํ๋ค. \_\_init\_\_.py ํ์ผ์ ํด๋น ๋๋ ํฐ๋ฆฌ๊ฐ ํจํค์ง์ ์ผ๋ถ์์ ์๋ ค์ฃผ๋ ์ญํ ์ ํ๋ค.๋๋ ํฐ๋ฆฌ์ \_\_init\_\_.py ํ์ผ์ด ์๋ค๋ฉด ํจํค์ง๋ก ์ธ์๋์ง ์์ ์๋ ์๋ค. \_\_init\_\_.py ํ์ผ์ ๋ด์ฉ์
์ง์ ๊ฐ๋ฐํ local package๋ฅผ importํ ๋๋ ํด๋น package์ ์์น์ ๋ง๊ฒ import ๊ฒฝ๋ก๋ฅผ ์ ์ ์ธํด์ผ ํ๋ค. Local package๋ฅผ importํ๋ ๊ฒฝ๋ก์๋ absolute path ์ relative path ๊ฐ ์๋ค.importํ๋ ํ์ผ์ด
ํ์ด์ฌ์์ module์ด๋ pakage๋ฅผ importํ ๋ํด๋น module ํน์ pakage์ ์์น๋ฅผ ์ฐพ์์ผ ํ๋ค.ํ์ด์ฌ์ sys.modules -> built-in modules -> sys.path ์์๋๋ก ์์น๋ฅผ ์ฐพ๋๋ค.ํ์ด์ฌ์ด ๋ชจ๋์ด๋ ํจํค์ง๋ฅผ ์ฐพ๊ธฐ ์ํด ๊ฐ์ฅ