python ์คํ์์ค ์น ํ๋ ์์ํฌ์ด์ ํ ์คํ ํ๋ ์์ํฌ์
๋๋ค. D๋ ๋ฌต์์
๋๋ค. ์๊ณ ์์ ์๊ณ !
MTV ๋ฐฉ์์
๋๋ค (๋๋ถ๋ถ์ MVC๋ฐฉ์!, ์ด๋ฆ๋ง ๋ค๋ฅผ๋ฟ ๊ฐ๋
์ ๊ฐ๋ค)
![](https://velog.velcdn.com/images%2Fhsngju%2Fpost%2Fab47aa3e-59dd-42c9-8855-168083ba6848%2Fdjango_MTV.PNG)
โพํ๋ก์ ํธ
1. ๊ฐ๋
๋ชจ๋ ๊ฒ์ ์ด๊ดํ๋ MTV, ์ดํ๋ฆฌ์ผ์ด์
๋ค์ ์งํฉ
๊ธฐ์กด | Django | ํ๋ ์ผ |
---|
Model | Model | DB์ ์ ์ฅ๋๋ ํ
์ด๋ธ ๊ตฌ์กฐ๋ฅผ ์ ์ |
View | Template | ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ UI |
Controller | View | ํ๋ก๊ทธ๋จ์ ๋ก์ง์ด ๋์ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ๋ฅผ template๊ณผ ๊ฒฐํฉํ์ฌ ์ ๋ฌ |
2. ๊ตฌ์กฐ
__init__.py
- ๋น ํ์ผ
- Python์๊ฒ ์ด ๋๋ ํ ๋ฆฌ๋ฅผ ํ๋์ Python ํจํค์ง๋ก ๋ค๋ฃจ๋๋ก ์ง์
settings.py
- ์น์ฌ์ดํธ์ ๋ชจ๋ ์ค์ ์ ํฌํจ
- ์ฐ๋ฆฌ๊ฐ ๋ง๋๋ ์ด๋ค application์ด๋ผ๋ ๋ฑ๋ก์ด ๋๋ ๊ณณ์ด๋ฉฐ, static files์ ์์น, database ์ธ๋ถ ์ค์ ๋ฑ์ด ์์ฑ
urls.py
- ์ฌ์ดํธ์ url์ view์ ์ฐ๊ฒฐ์ ์ง์
wsgi.py
- Web Server Gateway Interface
- ์ฅ๊ณ ์ดํ๋ฆฌ์ผ์ด์
์ด ์น์๋ฒ์ ์ฐ๊ฒฐ ๋ฐ ์ํตํ๋ ๊ฒ์ ๋์
asgi.py
- new in 3.0
- Asynchronous Server Gateway Interface
- ์ฅ๊ณ ์ดํ๋ฆฌ์ผ์ด์
์ด ๋น๋๊ธฐ์ ์น ์๋ฒ์ ์ฐ๊ฒฐ ๋ฐ ์ํตํ๋ ๊ฒ์ ๋์
โพ์ดํ๋ฆฌ์ผ์ด์
1. ๊ฐ๋
์ค์ ๋ก ์ด๋ ํ ์ญํ ์ ํด์ฃผ๋ ๊ฒ, ์ค์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ํ๋ ๊ฒ์ด ์ดํ๋ฆฌ์ผ์ด์
์ ์ญํ
- ํ๋์ ํ๋ก์ ํธ๋ ์ฌ๋ฌ ๊ฐ์ app์ ๊ฐ์ง ์ ์๋ค.
- app์ ํ๋์ ์ญํ ๋ฐ ๊ธฐ๋ฅ ๋จ์๋ก ์ชผ๊ฐ๋ ๊ฒ์ด ์ผ๋ฐ์
- ๊ทธ๋ฌ๋ ์์ ๊ท๋ชจ์ ์๋น์ค์์๋ ์ ๋๋์ง ์๋๋ค.
- ๋ฐ๋์ ์ด๋ ๊ฒ ๋๋ ์ผ ํ๋ค ๊ฐ์ ๊ธฐ์ค ๋ํ ์๋ค.
- ์ผ๋ฐ์ ์ผ๋ก app ์ด๋ฆ์
๋ณต์ํ
์ผ๋ก ํ๋ ๊ฒ์ด ์ข๋ค.
2. ๊ตฌ์กฐ
admin.py
- ๊ด๋ฆฌ์์ฉ ํ์ด์ง ๊ด๋ จ ๊ธฐ๋ฅ์ ์์ฑ ํ๋ ๊ณณ.
apps.py
- ์ฑ์ ์ ๋ณด๊ฐ ์๋ ๊ณณ.
- ์ฐ๋ฆฌ๋ ์์ ํ ์ผ์ด ์๋ค.
models.py
- ์ฑ์์ ์ฌ์ฉํ๋ Model(Database)๋ฅผ ์ ์ํ๋ ๊ณณ.
tests.py
- ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ณณ.
views.py
- view๊ฐ ์ ์ ๋๋ ๊ณณ.
โพ๊ธฐ๋ณธ์ ์ธ ์์ฒญ ์๋ต ์์
- ์ฅ๊ณ ์๋ฒ๋ก ์์ฒญ(request)์ด ๋ค์ด์ค๋ฉด,
urls.py
์์ ๊ทธ ์์ฒญ์ด ์ด๋๋ก ๊ฐ์ผํ๋ ์ง ์ธ์ํ๊ณ ๊ด๋ จ๋ ํจ์(View)๋ก ๋๊ฒจ์ค๋ค.
views.py
์์๋ ์์ฒญ์ ์๋ง๋ ํจ์๋ฅผ ์คํํ์ฌ, Model์ด๋ Templates๋ฅผ ํตํด ์์ฒญ์ ๋ํ ํ๋์ ํ๋ค.
- Templates
- Django์์ template์ด๋ผ๊ณ ๋ถ๋ฅด๋ HTMLํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก app ํด๋ ์์ templates ํด๋ ์์ ์์นํ๋ค.
- Model
- ๋ชจ๋ธ์ ๋จ์ผํ ๋ฐ์ดํฐ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ด์ ์์ฒญ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์ถ์ถํ๊ณ ์๋ตํ๊ธฐ๋ ํ๋ค.
โพTemplate
1. ๊ฐ๋
Django์์ ์ ์ ๋ค์๊ฒ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ํ์ฉํ๋ HTML ํ์ผ
์ฐธ๊ณ 1
2. Templates Variable
render()
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ View์์ ์ ์ํ ๋ณ์๋ฅผ Template๋ก ๋๊ฒจ์ ์ฌ์ฉํจ
context = {'key':value}
์ ๊ฐ์ ๋์
๋๋ฆฌ ํํ๋ก ๋๊ฒจ์ฃผ๋ฉฐ ์ฌ๊ธฐ์ key
์ ํด๋นํ๋ ๋ฌธ์์ด์ template์์ ์ฌ์ฉ๊ฐ๋ฅํ ๋ณ์๋ช
์ด ๋๋ค.
3. Variable Routing
์ฃผ์ ์์ฒด๋ฅผ ๋ณ์์ฒ๋ผ ์ฌ์ฉํด์ ๋์ ์ผ๋ก ์ฃผ์๋ฅผ ๋ง๋๋ ๊ฒ
์ฐธ๊ณ
urlpatterns = [
path('<int:article_pk>/update/',views.update),
]
def update(request,article_pk):
....
4. Django Template Language
django template system์์ ์ฌ์ฉํ๋ built-in template system์ด๋ค.
ํ๋ก๊ทธ๋๋ฐ์ ๋ก์ง์ด ์๋๋ผ (์ด๊ฑด view์์ ํ๋ค) ํ๋ ์ ํ
์ด์
์ ํํํ๊ธฐ ์ํ ๊ฒ!
- ํ์ด์ฌ์ฒ๋ผ if,for๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ์ด๊ฒ์ ๋จ์ํ python code๋ก ์คํ๋๋ ๊ฒ์ด ์๋๋ค.
syntax
- variables :
{{ }}
- context์์ ๊ฐ์ ์ถ๋ ฅํ๋๋ฐ, context๋ ํค๋ฅผ ๊ฐ์ ๋งคํํ๋ ๋์
๋๋ฆฌ์ ์ ์ฌํ ๊ฐ์ฒด
- tags :
{% tag %}
- filters :
{{ variable|filter }}
- ๋ณ์ ๋ฐ ํ๊ทธ ์ธ์์ ๊ฐ์ ๋ณํ
- comments
์ฐธ๊ณ 1
์ฐธ๊ณ 2
โพModel
๋จ์ผํ ๋ฐ์ดํฐ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
1. ๊ฐ๋
- ํ์์ ์ธ ํ๋(์ปฌ๋ผ)์ ๋ฐ์ดํฐ(๋ ์ฝ๋)์ ๋ํ ์ ๋ณด๋ฅผ ํฌํจํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๊ฐ์ ๋ชจ๋ธ(ํด๋์ค)๋ ๋จ์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ๊ณผ ๋งคํ๋๋ค.
- ๋ชจ๋ธ์ ๋ถ๊ฐ์ ์ธ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง DB์ ๊ตฌ์กฐ(layout)๋ฅผ ์๋ฏธ
- ์ฌ์ฉ์๊ฐ ์ ์ฅํ๋ ๋ฐ์ดํฐ๋ค์ ํ์์ ์ธ ํ๋์ ๋์(behavior) ํฌํจ
2. DB ๊ธฐ๋ณธ ๊ตฌ์กฐ
3. ORM
"Object-Relational-Mapping ์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํธํ๋์ง ์๋ ์ ํ์ ์์คํ
๊ฐ์(Django - SQL)๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ์ด๋ค. ์ด๊ฒ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ฌ์ฉํ ์ ์๋ '๊ฐ์ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค'๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ค."
- OOP ํ๋ก๊ทธ๋๋ฐ์์ RDBMS์ ์ฐ๋ํ ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๊ฐ์ ํธํ๋์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ด๋ค. ๊ฐ์ฒด ๊ด๊ณ ๋งคํ์ด๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
- ๊ฐ์ฒด ์งํฅ ์ธ์ด์์ ์ฌ์ฉํ ์ ์๋ '๊ฐ์' ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ํ๋ ๋๋ถ๋ถ์ ํ๋ ์์ํฌ๋ ORM ์ฌ์ฉ
- ์ฅ์
- SQL์ ๋ชฐ๋ผ๋ DB ์ฐ๋์ด ๊ฐ๋ฅํ๋ค. (SQL ๋ฌธ๋ฒ์ ๋ชฐ๋ผ๋ ์ฟผ๋ฆฌ ์กฐ์ ๊ฐ๋ฅ)
- SQL์ ์ ์ฐจ์ ์ธ ์ ๊ทผ์ด ์๋ ๊ฐ์ฒด ์งํฅ์ ์ธ ์ ๊ทผ์ผ๋ก ์ธํด
์์ฐ์ฑ
์ด ์ฆ๊ฐํ๋ค.
- ORM์ ๋
๋ฆฝ์ ์ผ๋ก ์์ฑ๋์ด ์๊ณ , ํด๋น ๊ฐ์ฒด๋ค์ ์ฌํ์ฉํ ์ ์๋ค. ๋๋ฌธ์ ๋ชจ๋ธ์์ ๊ฐ๊ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ปจํธ๋กค๋ฌ(view)์ ์ํด ๋ทฐ(template)๊ณผ ํฉ์ณ์ง๋ ํํ๋ก ๋์์ธ ํจํด์ ๊ฒฌ๊ณ ํ๊ฒ ๋ค์ง๋๋ฐ ์ ๋ฆฌ
- ๋จ์
- ORM ๋ง์ผ๋ก ์์ ํ ์๋น์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ด๋ ต๋ค.
- ํ๋ก์ ํธ์ ๋ณต์ก์ฑ์ด ์ปค์ง ๊ฒฝ์ฐ ์ค๊ณ ๋์ด๋๊ฐ ์์นํ ์ ์๋ค.
์ ๋ฆฌ
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ DB๋ฅผ ํธ๋ฆฌํ๊ฒ ๊ด๋ฆฌํ๊ฒ ์ํด ORM ํ๋ ์์ํฌ๋ฅผ ๋์
- "์ฐ๋ฆฌ๋ DB๋ฅผ ๊ฐ์ฒด(object)๋ก ์กฐ์ํ๊ธฐ ์ํด ORM์ ์ฌ์ฉํ๋ค."
โพCRUD
1. ๊ฐ๋
- ๋๋ถ๋ถ์ ์ปดํจํฐ ์ํํธ์จ์ด๊ฐ ๊ฐ์ง๋ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ธ Create(์์ฑ), Read(์ฝ๊ธฐ), Update(๊ฐฑ์ ), Delete(์ญ์ )๋ฅผ ๋ฌถ์ด์ ์ผ์ปซ๋ ๋ง
์ด๋ฌํ 4๊ฐ์ ์กฐ์์ ๋ชจ๋ ํ ์ ์๋ค๋ฉด ๊ทธ ์ํํธ์จ์ด๋ ์์ ํ๋ค๊ณ ํ ์ ์๋ค.
์ด๋ค ๊ธฐ๋ฅ์ ๋งค์ฐ ๊ธฐ๋ณธ์ ์ด๊ธฐ ๋๋ฌธ์, ํ ๋ฌถ์์ผ๋ก ์ค๋ช
๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
์ฐธ๊ณ
โพAdmin
1. ๊ฐ๋
- ์ฌ์ฉ์๊ฐ ์๋ ์๋ฒ์ ๊ด๋ฆฌ์๊ฐ ํ์ฉํ๊ธฐ ์ํ ํ์ด์ง
- Article class๋ฅผ
admin.py
์ ๋ฑ๋กํ๊ณ ๊ด๋ฆฌ
django.contrib.auth
๋ชจ๋์์ ์ ๊ณตํ๋ ๊ฒ โ Django์์ ์ ๊ณต๋๋ Authentication ์ธ์ฆ ํ๋ ์์ํฌ
- record ์์ฑ ์ฌ๋ถ ํ์ธ์ ๋งค์ฐ ์ ์ฉํ๊ณ CRUD ๋ก์ง์ ํ์ธํ๊ธฐ์ ํธ๋ฆฌํ๋ค.