- Django ํ์ต: ์ค์ ๋ก ์๋น์ค๋ฅผ ๋ง๋ค์ด๋ณด๋ฉฐ Django์ ์ต์ํด์ง๊ธฐ
- DB ์ค๊ณ ๋ฐ ๊ตฌ์ถ ๊ฒฝํ: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ(ERD), ๋ชจ๋ธ๋ง
- ํ๋ก์ ํธ ์งํ ๊ฒฝํ
- ํ์๊ธฐ๋ฅ
- ๋ก๊ทธ์ธ / ๋ก๊ทธ์์
- ํ์๊ฐ์
- CRUD
- ๊ฒ์๊ธ ์์ฑ/์ฝ๊ธฐ/์์ /์ญ์
- ์ด๋ฏธ์ง ๋ค์ค ์ฒจ๋ถ
- ์นดํ
๊ณ ๋ฆฌ
- ๊ฒ์๊ธ๋ง๋ค ์นดํ ๊ณ ๋ฆฌ ์ง์ ๊ฐ๋ฅ
- ํ๊ทธ
- ๊ฒ์๊ธ ์์ฑ ์ ์ฌ๋ฌ๊ฐ์ ํ๊ทธ ์ถ๊ฐ ๊ฐ๋ฅ
- ํ๊ทธ๋ณ๋ก ๊ฒ์๊ธ ๊ฒ์ ๊ฐ๋ฅ
- ๋๊ธ
- ํ ๊ฒ์๊ธ์ ๋๊ธ ์์ฑ/์์ /์ญ์
- ์ฌ์ฉ ํด
- VSCode
- ์ฌ์ฉ ์ธ์ด
- HTML, CSS, JS
- Python
- Web Framework
- Django 5.0.2
- ์๋น์ค ๋ฐฐํฌ
- AWS Lightsail
ํ
์คํธ์ฉ ๊ณ์
ID: test
PW: test1234!
- main
| App | URL | Views Function | HTML File Name | Note |
|---|---|---|---|---|
| main | "/" | index | main/index.html | ๋ฉ์ธ ํ๋ฉด |
- blog
| App | URL | Views Function | HTML File Name | Note |
|---|---|---|---|---|
| blog | "/" | post_list | posts/post_list.html | ์ฌ์ฉ์ ๊ฒ์๊ธ ๋ชฉ๋ก |
| blog | "all/" | all_post_list | posts/all_post_list.html | ์ ์ฒด ๊ฒ์๊ธ ๋ชฉ๋ก |
| blog | "create/" | post_create | posts/post_form.html | ๊ฒ์๊ธ ์์ฑ |
| blog | "int:pk/" | post_detail | posts/post_detail.html | ๊ฒ์๊ธ ์์ธํ์ด์ง |
| blog | "int:pk/update/" | post_update | posts/post_form.html | ๊ฒ์๊ธ ์์ |
| blog | "int:pk/delete/" | post_delete | posts/post_confirm_delete.html | ๊ฒ์๊ธ ์ญ์ ์ฌ๋ถ ํ์ธ |
| blog | "int:pk/comment/" | comment_create | posts/post_detail.html | ๋๊ธ ์์ฑ |
| blog | "comment/int:pk/update/" | comment_update | comments/comment_form.html | ๋๊ธ ์์ |
| blog | "comment/int:pk/delete/" | comment_delete | comments/comment_confirm_delete.html | ๋๊ธ ์ญ์ ์ฌ๋ถ ํ์ธ |
| blog | "category/" | category_list | categories/category_list.html | ์นดํ ๊ณ ๋ฆฌ ๋ชฉ๋ก |
| blog | "category/create/" | category_create | categories/category_form.html | ์นดํ ๊ณ ๋ฆฌ ์์ฑ |
| blog | "category/int:pk/update/" | category_update | categories/category_form.html | ์นดํ ๊ณ ๋ฆฌ ์์ |
| blog | "category/int:pk/delete/" | category_delete | categories/category_confirm_delete.html | ์นดํ ๊ณ ๋ฆฌ ์ญ์ ์ฌ๋ถ ํ์ธ |
| blog | "tag/str:tag_name/" | tag_list | posts/tag_list.html | ํ๊ทธ์ ํด๋นํ๋ ๊ฒ์๊ธ ๋ชฉ๋ก |
- accounts
| App | URL | Views Function | HTML File Name | Note |
|---|---|---|---|---|
| accounts | "signup/" | signup | accounts/form.html | ํ์๊ฐ์ |
| accounts | "login/" | login | accounts/form.html | ๋ก๊ทธ์ธ |
| accounts | "logout/" | logout | base.html | ๋ก๊ทธ์์(๋ชจ๋ฌ) |
| accounts | "profile/" | profile | accounts/profile.html | ํ๋กํ |
graph TD
A[๋ธ๋ก๊ทธ ์๋น์ค] --> B[์ฌ์ฉ์ ์ธ์ฆ]
A --> C[๊ฒ์๊ธ ๊ด๋ฆฌ]
A --> D[๋๊ธ ๊ด๋ฆฌ]
B --> B1[ํ์๊ฐ์
]
B --> B2[๋ก๊ทธ์ธ]
B --> B3[๋ก๊ทธ์์]
C --> C1[๊ฒ์๊ธ ์์ฑ]
C1 --> C1a{์ฌ์ง ์ฒจ๋ถ ์ฌ๋ถ}
C1a -->|Yes| C1a1[์ฌ๋ฌ ์ฌ์ง ์ฒจ๋ถ]
C1a -->|No| C1a2[์ฌ์ง ์ฒจ๋ถ ์์]
C --> C2[๊ฒ์๊ธ ์กฐํ]
C --> C3[๊ฒ์๊ธ ์์ ]
C --> C4[๊ฒ์๊ธ ์ญ์ ]
C --> C5[์นดํ
๊ณ ๋ฆฌ ๊ธฐ๋ฅ]
C --> C6[ํ๊ทธ ๊ธฐ๋ฅ]
C2 --> C2a[๊ฒ์๊ธ ๋ชฉ๋ก]
C2 --> C2b[๊ฒ์๊ธ ์์ธ]
D --> D1[๋๊ธ ์์ฑ]
D --> D2[๋๊ธ ์์ ]
D --> D3[๋๊ธ ์ญ์ ]
C3 -.-> E{๊ถํ ํ์ธ}
C4 -.-> E
D2 -.-> E
D3 -.-> E
E -->|์์ ์| E1[ํ์ฉ]
E -->|๋น์์ ์| E2[๊ฑฐ๋ถ]
B1 -.-> F[์ด๋ฉ์ผ ์ธ์ฆ]
B2 -.-> G[๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ]
style A fill:#f9f,stroke:#333,stroke-width:4px
style C1 fill:#bbf,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5
style D1 fill:#bbf,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5
๐ฆPholog
โฃ ๐accounts
โ โฃ ๐migrations
โ โฃ ๐__pycache__
โ โฃ ๐admin.py
โ โฃ ๐apps.py
โ โฃ ๐models.py
โ โฃ ๐tests.py
โ โฃ ๐urls.py
โ โฃ ๐views.py
โ โ ๐__init__.py
โฃ ๐blog
โ โฃ ๐migrations
โ โฃ ๐__pycache__
โ โฃ ๐admin.py
โ โฃ ๐apps.py
โ โฃ ๐forms.py
โ โฃ ๐models.py
โ โฃ ๐tests.py
โ โฃ ๐urls.py
โ โฃ ๐views.py
โ โ ๐__init__.py
โฃ ๐config
โ โฃ ๐__pycache__
โ โฃ ๐asgi.py
โ โฃ ๐settings.py
โ โฃ ๐urls.py
โ โฃ ๐wsgi.py
โ โ ๐__init__.py
โฃ ๐main
โ โฃ ๐migrations
โ โฃ ๐__pycache__
โ โฃ ๐admin.py
โ โฃ ๐apps.py
โ โฃ ๐models.py
โ โฃ ๐tests.py
โ โฃ ๐urls.py
โ โฃ ๐views.py
โ โ ๐__init__.py
โฃ ๐media
โ โ ๐blog
โฃ ๐static
โ โ ๐git_icon.png
โฃ ๐templates
โ โฃ ๐accounts
โ โ โฃ ๐form.html
โ โ โ ๐profile.html
โ โฃ ๐categories
โ โ โฃ ๐category_confirm_delete.html
โ โ โฃ ๐category_form.html
โ โ โ ๐category_list.html
โ โฃ ๐comments
โ โ โฃ ๐comment_confirm_delete.html
โ โ โ ๐comment_form.html
โ โฃ ๐main
โ โ โ ๐index.html
โ โฃ ๐posts
โ โ โฃ ๐all_post_list.html
โ โ โฃ ๐post_confirm_delete.html
โ โ โฃ ๐post_detail.html
โ โ โฃ ๐post_form.html
โ โ โฃ ๐post_list.html
โ โ โ ๐tag_list.html
โ โ ๐base.html
โฃ ๐.gitignore
โฃ ๐db.sqlite3
โฃ ๐manage.py
โฃ ๐README.md
โ ๐requirements.txt
- ์๋ ์ผ์ ํ๋ ๋จธ๋ฉ์ด๋๋ก ์์ฑํ์ต๋๋ค.
gantt
dateFormat YYYY-MM-DD
title ๊ฐ๋ฐ ํ๋ก์ ํธ ์ค์ผ์ค
section ๊ธฐํ ๋ฐ ์ค๋น
๋ ํฌ์งํ ๋ฆฌ ์์ฑ: 2024-03-07, 1d
ํ๋ก์ ํธ ์์ด๋์ด ๊ธฐํ: 2024-03-07, 1d
WBS ์์ฑ: 2024-03-07, 1d
section ๋์์ธ
์์ด์ดํ๋ ์ ์ ์: 2024-03-08, 1d
ERD: 2024-03-08, 2d
section ๊ฐ๋ฐ
URL ๊ตฌํ: 2024-03-09, 1d
ํ์๊ธฐ๋ฅ ๊ตฌํ: 2024-03-09, 1d
๋ชจ๋ธ ๊ตฌํ: 2024-03-10, 2d
CRUD ๊ตฌํ: 2024-03-10, 2d
์ถ๊ฐ ๊ธฐ๋ฅ ๊ตฌํ: 2024-03-11, 3d
section ํ
์คํธ ๋ฐ ๋ฐฐํฌ
์์ ๋ฐ ํ
์คํธ: 2024-03-12, 2d
๋ฐฐํฌ: 2024-03-13, 1d
- Pigma๋ก ์ ์ํ์์ต๋๋ค.
- ๋งํฌ
| ์ด๋ฆ | ์ด๋ฏธ์ง | ์ด๋ฆ | ์ด๋ฏธ์ง |
|---|---|---|---|
| ๋ฉ์ธ ํ์ด์ง | ![]() |
ํ์๊ฐ์ /๋ก๊ทธ์ธ ํ์ด์ง | ![]() |
| ์ ์ฒด ๊ฒ์๊ธ | ![]() |
๋ด ๊ฒ์๊ธ | ![]() |
| ๊ฒ์๊ธ ์์ธํ์ด์ง | ![]() |
๊ฒ์๊ธ ์์ฑ | ![]() |
| ํ๊ทธ๋ณ ๊ฒ์๊ธ | ![]() |
์นดํ ๊ณ ๋ฆฌ ๊ด๋ฆฌ | ![]() |
- https://dbdiagram.io/ ์ ํตํด ์ ์ํ์ต๋๋ค.
-
CRUD
- User๋ง ๊ฒ์๊ธ ์์ฑ ๊ฐ๋ฅ
- ๊ฒ์๊ธ ์ฝ๊ธฐ
- ํด๋น ๊ฒ์๊ธ์ ์์ฑํ User๋ง ์์ , ์ญ์ ๊ฐ๋ฅ
-
๋ค์์ Image ์ฒจ๋ถ ๊ฐ๋ฅ
- ImageFormset(inlineformset)์ ์ด์ฉ
- ํ ๊ฒ์๋ฌผ์ ์ต๋ 5๊ฐ์ ์ด๋ฏธ์ง ์ฒจ๋ถ ๊ฐ๋ฅ (์ฒจ๋ถ ๊ฐฏ์ ์กฐ์ ๊ฐ๋ฅ)
- ์ฒจ๋ถํ ์ด๋ฏธ์ง ์ญ์ , ๋ณ๊ฒฝ ๊ฐ๋ฅ
-
์นดํ ๊ณ ๋ฆฌ
- ๊ฐ User๋ณ๋ก ์นดํ ๊ณ ๋ฆฌ ๊ธฐ๋ฅ ์ฌ์ฉ ๊ฐ๋ฅ
- ์นดํ ๊ณ ๋ฆฌ ์์ , ์ญ์
-
๋๊ธ
- ๊ฒ์๊ธ ์๋์ ๋๊ธ ์์ฑ ๊ฐ๋ฅ
- ์์ฑํ User๋ง ์์ , ์ญ์ ๊ฐ๋ฅ
-
ํ๊ทธ
- ๊ฒ์๊ธ ์์ฑ ์
#์ ๊ธฐ์ค์ผ๋ก ํ๊ทธ ์ถ๊ฐ ๊ฐ๋ฅ - ํ๊ทธ๋ณ๋ก ๊ฒ์๊ธ์ ๋ชจ์๋ณผ ์ ์์
- ๊ฒ์๊ธ ์์ฑ ์
-
๊ฒ์
- ์ ๋ชฉ, ๋ด์ฉ์ ํด๋น ํค์๋๊ฐ ํฌํจ๋ ๊ฒ์๊ธ์ ๊ฒ์ํ ์ ์์
-
All / User ๋ถ๋ฆฌ
- ์ ์ฒด ํฌ์คํ /๊ฐ์ธ ํฌ์คํ ์ผ๋ก ๋๋ -> ์ปค๋ฎค๋ํฐ/๊ฐ์ธ๊ณต๊ฐ์ ํจ๊ณผ
- ๊ฒ์ ์ญ์ ์ ์ฒด/๊ฐ์ธ ๋ณ๋ก ๊ฐ๋ฅํ๋ค.
-
ImageFormSet(inlineformset)์ ์ด์ฉํด ๋ค์ค ์ด๋ฏธ์ง ์ฒจ๋ถ๋ฅผ ๊ตฌํํ๋ค.
- ์ญ์ /์์ ๊ธฐ๋ฅ์ด ์ ์์ ์ผ๋ก ๋์ํ์ง ์์์.
- ImageFormSet์ DELETE ์์ฑ์ ์ง์ํ๋ฏ๋ก ์ ๋ก๋ํ ์ด๋ฏธ์ง ์ญ์ ๊ฐ ๊ฐ๋ฅํ๋ค.
- ํ์ง๋ง ์ญ์ ํ ์ด๋ฏธ์ง๊ฐ ๊ทธ๋๋ก ๋จ์์๊ฑฐ๋, Form์ด ๋ฆฌ์ ๋๋ ํ์์ด ๋ํ๋จ.
- ๋ํ ๊ธฐ์กด์ ์ฒจ๋ถํ ์ด๋ฏธ์ง๋ฅผ ๋ณ๊ฒฝํ๋ ค๊ณ ํ๋ฉด ๊ฒฝ๋ก๋ฅผ ์ฐพ์ง ๋ชปํจ.
- ๊ฒฝ๋ก ์ง์ ๋ฌธ์ ๋ผ๊ณ ํ๋จ.
- ์ด๋ฏธ์ง ์ ์ฅ ์ uuid๋ฅผ ์ด์ฉํด ์ค๋ณต๋ฐฉ์ง, ๋ณด์์ฑ์ ๋์์ผ๋ ์๋ฌ ํด๊ฒฐ์ ์ํด ์ ๊ฑฐ.
- uuid ์ ๊ฑฐ ํ ์ฌ๋ฐ๋ฅธ ๊ฒฝ๋ก๋ฅผ ์ง์ ํด๋ ํด๊ฒฐ X
- update view์
try-except๊ตฌ๋ฌธ์ ์ถ๊ฐ, post_form ํ ํ๋ฆฟ ์์ -> ํด๊ฒฐ - ์ ํํ ์์ธ ์ฐพ๋์ค
- ์ญ์ /์์ ๊ธฐ๋ฅ์ด ์ ์์ ์ผ๋ก ๋์ํ์ง ์์์.
-
ํ๊ทธ ๋ฌธ์์ด ์ฒ๋ฆฌ
#์ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌ -> ์ฐจ๋ก๋๋ก ๋ฆฌ์คํธ์ ์ถ๊ฐ -> DB์ ๋ฐ์์ ๊ณํํ์ง๋ง ์๋ฌtagsํ๋๋ฅผ ์ค๋ณต ์์ฑํด์ ์๊ธด ์๋ฌ๋ก form ์์ ํ ํด๊ฒฐ
- ๊ฒ์๊ธ ์์ ์ ์
๋ ฅํ๋ ํ๊ทธ๋ค์ด Queryset ํํ๋ก ๋ํ๋จ.
- Postform์
__init__ํจ์์์ ์ฟผ๋ฆฌ์ => ๋ฌธ์์ด๋ก ๋ณํ ํ join
- Postform์
-
์นดํ ๊ณ ๋ฆฌ
- ์๋ฌด๊ฒ๋ ์ ํ/์์ฑํ์ง ์์์ ๊ฒฝ์ฐ -> ์๋ฌ!
- (1)์๋์ผ๋ก ์นดํ ๊ณ ๋ฆฌ ์์ฑํด์ฃผ๊ธฐ (2)์นดํ ๊ณ ๋ฆฌ ํผ ์์ฒด๋ฅผ multiple๋ก ์ค์
- (2)๋ก ๊ฒฐ์ . ๋์ ๋์์ธ์ multipleํ์ง์๊ฒ ๋ณ๊ฒฝ.
- form์ multipleํ form์ผ๋ก ๊ตฌ์ฑ,
<select>์ ํ์ single selectํํ๋ก ์ง์ . - ์ ๋ต์ด ์๋์ ์ด์ฉํ ์ ๋ต
- form์ multipleํ form์ผ๋ก ๊ตฌ์ฑ,
- ๋ค๋ฅธ ์ ์ ๊ฐ ์์ฑํ ์นดํ
๊ณ ๋ฆฌ๊ฐ ๋ณด์ด๋ ์๋ฌ
- ๋ง์ฐฌ๊ฐ์ง๋ก Postform์
__init__ํจ์ ์์ . - ์นดํ ๊ณ ๋ฆฌ์ auther = user ์ธ ์ผ์ด์ค๋ง ๋ณด์ฌ์ฃผ๋๋ก ๋ณ๊ฒฝ.
- ๋ง์ฐฌ๊ฐ์ง๋ก Postform์
-
์ด๋ฏธ์ง ์ฒ๋ฆฌ ๋ถ๋ถ์์ ์ด ์๊ฐ์ 80%๋ ์๋นํ๊ฒ๊ฐ๋ค.
- ๋ชจ๋ธ ์ค๊ณ ๋ถ๋ถ์ด ์ค์ํ ๊ฒ ๊ฐ๋ค. ์๋ชป๋ ์ค๊ณ๋๋ฌธ์ ์์ํ ์๋ฌ๊ฐ ์์๋ค. (1:N ๊ด๊ณ ์ค์ ๋ฑ...)
- ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ์ค๊ณ ๊ฐ๋์ง ์ ๋๋ก ์์์ผ๊ฒ ๋ค.
- ์น ๊ฐ๋ฐ์ ํ๋ ค๋ฉด JS๋ ํ์์ธ๋ฏํ๋ค.
- ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋๋ผ๋ ์ด๋ฐ์ ๊ธธ์ ์ ์ก์๋์ผํ๋ค... ๊ณํ๊ณผ ๊ตฌ์ฑ, ๊ตฌ์ฑ ๊ณํ์ ์ค์์ฑ.
- ์ฐจ๋ณํ๋ ๊ธฐ๋ฅ, ์ฝ๋๊ฐ ๋ถ์กฑํจ
- ์ฌ์ง ์
๋ก๋ ๊ธฐ๋ฅ์ ๋ํด ๋ ์๊ฐํด๋ณด๊ธฐ
- ๋ณดํต์ ๋ธ๋ก๊ทธ ์๋น์ค์์๋ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง
- (์๋ฌด๋๋ JS๋ก ๋์ ์ฒ๋ฆฌํด์ฃผ๋ ๋ฐฉ์์ด ๋์๊ฒ๊ฐ๋ค.)
์ฒซ Django ํ๋ก์ ํธ์ธ๊ฑธ ๊ฐ์ํด๋ ์์ฌ์์ด ๋จ๋๋ค.
์ด๋ฏธ์ง ๊ตฌํ์ ๋งค๋ฌ๋ ค์ ๋ค๋ฅธ ๋ถ๋ถ๋ค์ ๋์น๊ฒ๊ฐ๋ค.
์ถํ์ ๋ถ์กฑํ ๋ถ๋ถ๋ค, ์ถ๊ฐํ๊ณ ์ถ์ ๋ถ๋ถ๋ค์ ๋ณด๊ฐํ ์์ ์ด๋ค.









