โ
์์ฝ๋์์ 1์ฐจ ํ๋ก์ ํธ๊ฐ ๋๋ฌ์ต๋๋ค.
2020๋
8์ 18์ผ ~ 2020๋
8์ 28์ผ (11์ผ) ์ฝ 2์ฃผ๋์ ์งํ๋์์ต๋๋ค.
ํ ์๊ฐ
ํ๋ช
: Dev-X
ํ์์ ์ด 5๋ช
์ผ๋ก ๊ตฌ์ฑ๋์์ต๋๋ค.
๋ฐฑ์ค๋ part - ๊น๊ธฐ์ฑ, ์ด์ง์ฐ
ํ๋ก ํธ์๋ part - ์ดํธํ, ์ก๋ค์ฌ(PM), ํฉ์ฐ์ฑ
Spacex ํด๋ก ํ๋ก์ ํธ
๐คspacex๊ฐ ์์ํ ์ ์์ด ๊ฐ๋ตํ๊ฒ ์๊ฐ๋ฅผ ํ๊ฒ ์ต๋๋ค.
์ผ๋ก ๋จธ์คํฌ์ ์ํด 2002๋
์ค๋ฆฝ๋์์ผ๋ฉฐ, ๋ฏธ๊ตญ์ ๋ฏผ๊ฐ ์ฐ์ฃผ๊ธฐ์
์ผ๋ก ์ฌ์ฌ์ฉ ๋ก์ผ์ ๊ฐ๋ฐํ์ฌ ๋ก์ผ ๋ฐ์ฌ๋น์ฉ์ ๊ธฐ์กด์ 10๋ถ์ 1 ์์ค์ผ๋ก ์ค์ด๊ฒ ๋ค๋ ๊ฒ์ผ๋ก ๊ธฐ์ ๊ฐ๋ฐ ๋ฐฉํฅ์ผ๋ก ์ก์์ต๋๋ค.
์ฐ์ฃผ ์ ๊ฑฐ์ฅ ๋ณด๊ธ ํ๋ก์ ํธ์ ์ ์ ๋์ด ๋๊ท๋ชจ ํฌ์๋ฅผ ๋ฐ์ ์ธ๊ณ์ ํ๋ฆ์ ๋ฐ๊ฟ๋๊ฐ๊ณ ํ์ฌ๊น์ง ํญ๊ณต์ฐ์ฃผ์ฐ์
์์ ์ ์ผ๋ฌด์ดํ ๋๋จํ ๊ธฐ์
์
๋๋ค.๐
spacex ์ฌ์ดํธ
์ฌ์ดํธ๋ spacex์ ์๊ฐ ๋ฐ ์ญ์ฌ๋ด์ฉ, shop ํ์ด์ง๋ก ๊ตฌ์ฑ๋์ด์์ต๋๋ค.
Back-End ์ ์ฉ๊ธฐ์
- Python, Django Framework
- Beautifulsoup, Selenium
- Bcrypt
- PyJWT
- Decorator
- AqueryTool, MySQL
- AWS EC2,RDS
- CORS headers
- S3
- Linux
- Git, GitHub
- Trello
- Slack
- Postman
- AWS
๋์์
ํ๋ก์ ํธ์์ ๋งก์ ์ญํ
- Database modeling๋ฅผ ERD๋ชจ๋ธ๋ก ์ค๊ณ
-
Endpoint : user - ๋ก๊ทธ์ธ,ํ์๊ฐ์
, order - ์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ/๋ชฉ๋ก/์ญ์
-
Bcrypt, PyJWT : ํ์๊ฐ์
์ ๊ธฐ์
ํ ๋น๋ฐ๋ฒํธ ์ํธํ ๋ฐ ํ ํฐ ๋ฐํ
-
LoginDecorator : ๋ฐํํ ํ ํฐ์ ํตํ ๋ฑ๋กํ์ ์ธ์ฆ/์ธ๊ฐ, ์ฅ๋ฐ๊ตฌ๋ ์๋ํฌ์ธํธ ์ ์ฉ
-
UnitTest : ์ดํ ์์
์์
-
RESTful API๋ฅผ ์ดํดํ๊ณ URL์ฃผ์๋ฅผ RESTFUL์์ผ๋ก ๊ตฌํ
[devx.url]
[order.url]
-
HTTP : GET, POST, DELETE, PETCH ๋ฉ์๋์ ์ฐจ์ด์ ์ ์๊ณ ํ๋ก ํธ์์ ๋์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ
-
MYSQL : Database ์์ฑ, Django์ ์ฐ๊ฒฐ
๊ธฐ์ตํ๊ณ ์ถ์ ์ฝ๋/ํจ์/๋ก์ง
OrderAddView
- Decorator๋ก ๋ก๊ทธ์ธ ์ํ ์ธ์ง ์๋์ง ํ์ธ์ ํฉ๋๋ค.
- ํ๋ก ํธ ๋จ์์ ์ฅ๋ฐ๊ตฌ๋ ์ถ๊ฐ ๋ฒํผ์ผ๋ก ๋๋ฅด๋ฉด ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ json์ผ๋ก ๋ณ๊ฒฝํ๊ณ ๋ค์ด์จ prdouct_id๊ฐ ์กด์ฌํ๋ ์ํ์ธ์ง ์๋์ง filter().exits() ๋ฉ์๋๋ก ํ์ธ์ ํฉ๋๋ค.
- ๋ง์ฝ, ์กด์ฌํ๋ค๋ฉด Order์ ๋ฃ์ ์ธ๋ํค์ธ User์ ๋ณด์ product์ ๋ณด๋ฅผ ๊ฐ๊ฐ getํฉ๋๋ค.
- ์ด๋, User์ ๋ณด๋ decorator์์ ๋ฐํํ๋ request์์ user์ ๋ณด๋ฅผ ํ์ฉํ์ฌ ๊ฐ์ ธ์ต๋๋ค.
- product๋ request.body์ ๋ด๊ฒจ ์จ ์ ๋ณด๋ฅผ ํ์ฉํฉ๋๋ค.
- ์ดํ ๋๋จธ์ง color, size, quantity๋ request.body์ ๋ด๊ธด ์ ๋ณด๋ฅผ ํตํด์ order๊ฐ์ฒด๋ก ๋ง๋ค๊ณ DB์ ์ ์ฅํฉ๋๋ค.
OrderGetView
- decorator์์ ์ ์ฅํ user์ ๋ณด๋ฅผ ํตํด์ user_id๋ฅผ ๊ฐ์ ธ์์ Orderํ
์ด๋ธ์์ ํด๋น ์ ์ ์ ์ฃผ๋ฌธ๋ง ํํฐ๋งํฉ๋๋ค.
- ์ธ๋ํค์ธ productํ
์ด๋ธ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ selected_related๋ฅผ ์ด์ฉํด์ order์ product_id์ ๋ํ productํ
์ด๋ธ์ name,price ๊ฐ์ ์ถ๊ฐ๋ก ๊ฐ์ ธ์ต๋๋ค.
- values()๋ฉ์๋๋ selectํ ์ปฌ๋ผ๋ชฉ๋ก์ ์ง์ ํฉ๋๋ค.
- all()๋ฉ์๋๋ ์กฐ๊ฑด์ ๋ง๋ ๋ชจ๋ ํ์ ๊ฐ์ ธ์ค๋ ๊ธฐ๋ฅ์
๋๋ค.
- ๊ฐ์ ธ์จ order๋ชฉ๋ก์ listํ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
- list๋ฅผ for๋ฌธ์ผ๋ก ๋๋ฆฝ๋๋ค. why?
order๋ง๋ค ์ธ๋ํค๋ก ์ฐ๊ฒฐ๋ product_id ๊ฐ์ ๊ฐ์ง๊ณ ํํฐ๋งํด์ imageํ
์ด๋ธ์์ image์ ๋ณด๋ฅผ ๊ฐ๊ณ ์ค๊ธฐ ์ํด์์
๋๋ค.
์ด๋, imageํ
์ด๋ธ์ด productํ
์ด๋ธ์ ์ ์ฐธ์กฐํ๊ณ productํ
์ด๋ธ์ด imageํ
์ด๋ธ์ ์ญ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์ productํ
์ด๋ธ๋ก ์กฐํํ๊ธฐ ๋๋ฌธ์ prefetch_related๋ฅผ ์ด์ฉํด์ image์ปฌ๋ผ์ ๊ฐ์ ธ์ต๋๋ค.
- ์กฐ๊ฑด์ ๋ง๋ ์ปฌ๋ผ์ ํ๊ฐ์ฉ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ get()๋ฉ์๋๋ฅผ ์ด์ฉํด ๊ฐ์ ธ์ต๋๋ค.
- ์ดํ, dictionary์์ image์ ๋ณด๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด
order['image'] = images['image__image']
๊ณผ ๊ฐ์ ์ฒ๋ฆฌ๋ฅผ ํฉ๋๋ค.
- ๊ฒฐ๊ณผ๋ก ๋ณด๋ผ ๋ฆฌ์คํธ result_list์ ์ถ๊ฐํฉ๋๋ค.
OrderDelView
- decorator์์ ์ ์ฅํ user์ ๋ณด๋ฅผ ํตํด์ user_id๋ฅผ ๊ฐ์ ธ์์ Orderํ
์ด๋ธ์์ ํด๋น ์ ์ ์ ์ฃผ๋ฌธ๋ง ํํฐ๋งํฉ๋๋ค.
- request body์์ ๋ด์ ์ ๋ณด์ user_id ๊ฐ๊ณ ์ต๋๋ค.
- ํ๋ก ํธ๋จ์์ ์ญ์ ๋ฅผ ๋๋ฅด๋ฉด Order ๊ฐ์ฒด์์ order_id๋ฅผ getํด์์ order๋ฅผ ์ญ์ ํฉ๋๋ค.
์๋ฒ ํ
์คํธ ๊ฒฐ๊ณผ๐