๋ถ๋ชจ์ ์๋
๊ฐ ํจ๊ป ์ฌ์ฉํ๋ ๊ธ์ต ๊ต์ก ๊ธฐ๋ฐ ๊ฐ๊ณ๋ถ ์๋น์ค์
๋๋ค.
์๋
์ ์๋น/์ ์ถ ์ต๊ด์ ๊ธฐ๋กํ๊ณ , ๋ถ๋ชจ๊ฐ ์์ ํ๊ฒ ๋ชจ๋ํฐ๋งํ ์ ์๋๋ก ์ค๊ณ๋ Django REST API ํ๋ก์ ํธ์
๋๋ค.
OZ Coding School Backend Team Project
๊ฐ๋ฐ ๊ธฐ๊ฐ: 2026.02.19 ~ 2026.02.27
financecontents(user, proverb) Unique ์ ์ฝ ๊ธฐ๋ฐ ์ค๋ณต ์คํฌ๋ฉ ๋ฐฉ์งoz-be-16-team1/
โโโ config/
โโโ users/
โโโ assets/
โโโ finance/
โโโ missions/
โโโ contents/
โโโ manage.py
Asset.objects.get(
pk=asset_id,
user=request.user
)
ํ์ธ์ ์์ฐ ์ฐ๊ฒฐ์ ์ฐจ๋จํ๋๋ก ๊ตฌํํ์ต๋๋ค.
payment_day ๊ธฐ๋ฐ ์ ๊ธฐ์ง์ถ ์ค๊ณMoneyProverb.objects.order_by("?").first()
๋งค ์์ฒญ๋ง๋ค ๋ค๋ฅธ ๊ธ์ต ๋ช ์ธ์ ์ ๊ณตํ๋๋ก ๊ตฌํํ์ต๋๋ค.
UniqueConstraint(
fields=["user", "proverb"],
name="unique_user_proverb"
)
๋์ผ ์ฌ์ฉ์์ ์ค๋ณต ์คํฌ๋ฉ์ DB ๋ ๋ฒจ์์ ์ฐจ๋จํ์ต๋๋ค.
if obj.user != request.user:
raise PermissionDenied()
์์ฑ์ ๋ณธ์ธ๋ง ์์ /์ญ์ ๊ฐ๋ฅํ๋๋ก ์ฒ๋ฆฌํ์ต๋๋ค.
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/finance/transaction/ |
๊ฑฐ๋ ๋ชฉ๋ก ์กฐํ |
| POST | /api/finance/transaction/ |
๊ฑฐ๋ ์์ฑ |
| PATCH | /api/finance/transaction/{id}/ |
๊ฑฐ๋ ์์ |
| DELETE | /api/finance/transaction/{id}/ |
๊ฑฐ๋ ์ญ์ |
| GET | /api/finance/fixed/ |
๊ณ ์ ์ง์ถ ๋ชฉ๋ก |
| POST | /api/finance/fixed/ |
๊ณ ์ ์ง์ถ ์์ฑ |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/contents/ |
๋๋ค ๋ช ์ธ ์กฐํ |
| GET | /api/contents/proverb_scrap/ |
๋ด ์คํฌ๋ฉ ๋ชฉ๋ก |
| POST | /api/contents/proverb_scrap/ |
์คํฌ๋ฉ ์์ฑ |
| DELETE | /api/contents/proverb_scrap/{id}/ |
์คํฌ๋ฉ ์ญ์ |
68 tests, OK
์ ์ฒด ํ ์คํธ ํต๊ณผ๋ก ํต์ฌ ๊ธฐ๋ฅ ์์ ์ฑ์ ๊ฒ์ฆํ์ต๋๋ค.
๊ธ์ต ์๋น์ค๋ ๋จ์ CRUD๋ณด๋ค ๊ถํยท๋ณด์ ์ค๊ณ๊ฐ ๋ ์ค์ํ๋ค๋ ์ ์ ์ค๊ฐํ์ต๋๋ค. ๋๋ฉ์ธ ๊ท์น์ Serializer์ DB Constraint๋ก ์ด์ค ๊ฒ์ฆํ๋ ๋ฐฉ์, ๋ถ๋ชจ/์๋ ๊ด๊ณ ๊ธฐ๋ฐ ์กฐํ ์ ์ฑ ์ค๊ณ, ๊ทธ๋ฆฌ๊ณ API ์ค๊ณ ๋จ๊ณ(PRD/FlowChart/ERD)์ ์ค์์ฑ์ ์ง์ ๊ฒฝํํ๋ฉฐ ๋ฐฐ์ธ ์ ์์์ต๋๋ค.
๋ํ ์ค์ ๊ธ์ต ์๋น์ค ์์ค์ ๋ชฉํ๋ก ์ธ๋ถ API ์ฐ๋๊น์ง ์๋ํ๋ฉฐ ๊ธฐ์ ์ ํ์ฅ ๊ฐ๋ฅ์ฑ์ ๊ณ ๋ฏผํ ๊ฒฝํ๋ ์๋ฏธ ์์์ต๋๋ค.
๊ฐ์ ํ ์ ์ผ๋ก๋ ์ด๊ธฐ ๋จ๊ณ์์ ํ์ค์ ์ ์ฝ๊ณผ ๋๋ฉ์ธ ์์ธ ์ํฉ์ ๋ ์ถฉ๋ถํ ์ ์ํ์ด์ผ ํ๊ณ , ํ์ ๊ฐ ์ฝ๋ ๊ณต์ ์ ๊ฒ์ฆ ๊ธฐ์ค์ ๋ง์ถ๋ ํ์ ์ญ๋์ด ๋ถ์กฑํ๋ค๋ ์ ์ ๋๊ผ์ต๋๋ค.