Model
Django κΈ°λ³Έ νλ¦
url
μ μ μνλ€urls.py
λ μ΄μ νλ€!
views.py
μ μ€νν ν¨μλ₯Ό λ§λ λ€λ°νν
html
λ₯Ό λ§λ λ€
Django project / app μ€μ
Djangoλ νλμ projectκ° λ³΅μμ appμ κ°μ§λ κ΅¬μ‘°λ‘ λμ΄μλ€
κ°κ°μ appλ€μ MTV patternμ κ°κ³ μλ€
λ€μ€ appμΌλ‘ ꡬμ±λλ κ²½μ° μ΄λ¦ μ€λ³΅μ΄ κ°λ₯νμ¬
template/{appμ΄λ¦}/{}.html
μΌλ‘ ꡬμ±νλ€why?
κ°λ³ appμ μμ±λ templates folderμ νμ directoryλ template fileλ‘ νμ©λλ€ (default)
Djangoλ template fileμ νμνλ κ³Όμ μμ
settings.py
μDIR
κ³ΌINSTALLED_APPS
μ μ μΈ μμμ λ°λ₯΄κΈ° λλ¬Έμ μ΄λ¦ μ€λ³΅μ λ§κ³ μ template λ°μ app μ΄λ¦κ³Ό λμΌν folderλ₯Ό λλ€
1. Project μμ±
2. Project κΈ°λ³Έ μ€μ - settings.py
settings.py
3. app μμ± (articles)
appμ΄λ¦μ μΌλ°μ μΌλ‘ 볡μνμΌλ‘ ꡬμ±λλ€
app λ±λ‘
settings.py
4. urls.py
μμ±
urls.py
μμ±νλ‘μ νΈ ν΄λ
κ°λ³ app
MTVμ μν
view
url
request (μμ² κ΄λ ¨ μ 보)
return render()
Template
html
DTL
λ°λ³΅ / 보건 /νν°
Model
DB
Model in Django
Model
: Dataμ λν λ¨μΌ μ 보 μμ€
Migrations
: λͺ¨λΈμ λ³κ²½μ¬νλ€μ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§μ λ°μνλ λ°©λ²
Migration νλ¦
Model μμ±/μμ /μμ λ±
migration
νμΌ μμ±migration fileμ modelμ λ³κ²½μ¬νμ κΈ°λ‘νκ³ , databaseμ λ°μνκΈ° μν μ½λλ€λ‘ ꡬμ±λλ€
migration fileμ database schemeλ₯Ό μν
λ²μ κ΄λ¦¬ μμ€ν
μ΄λΌκ³ μκ°νμ! ->git
migrate
λ₯Ό ν΅ν databaseμ μ μ©
MTV patternμμ λ°μ΄ν° κ΄λ¦¬
Modelλ‘ μ μλ db schemaλ₯Ό λ°μ
dbλ₯Ό μ‘°μνλ queryλ¬Έ (python κ°μ²΄ μ‘°μμΌλ‘ κ°λ₯νλ€)
Model νμ©
1. model μ μ
models.py
models.Model
μ μμλ°μ classλ₯Ό μμ±νλ€μμ±μΌλ‘λ λ΄κ° ꡬμ±νκ³ μΆμ tableμ columnμ μ΄λ¦μ μ§μ νκ³ , data typeμ λ§μΆ°μ fieldλ₯Ό μ μνλ€
id νλλ μλμ μΌλ‘ pk κ°μΌλ‘ μμ±λλ€.
μμμ μ μλ νλμ μ΅μ μ 보λ λ€μκ³Ό κ°λ€.
CharField
:max_length
: νμ
DateTimeField
auto_now_add
: (μ ν) μμ±μμλ§ μλμΌλ‘ ν΄λΉ μκ° κ° μ€μ auto_now
: (μ ν) μμ μλ§λ€ μλμΌλ‘ ν΄λΉ μκ° κ° μ€μ
μ΄μΈμ νλλ https://docs.djangoproject.com/ko/2.1/ref/models/fields/#field-types λ§ν¬μμ νμΈ!
CharField
vs TextField()
CharField
vs TextField()
: μ€μ λ‘ <form>
tagλ‘ dataλ₯Ό λ°μλ <input>
μΌλ‘ λ°μ μ§ <textarea>
λ‘ λ°μμ§μ λ°λΌ μ ννκΈ°
2. migration
Migrations are Djangoβs way of propagating changes you make to your models (adding a field, deleting a model, etc.) into your database schema. λ§μ΄κ·Έλ μ΄μ μ djangoμμ λͺ¨λΈμ λ³κ²½ μ¬νμ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§μ λ°μνκΈ° μν λ°©λ²μ΄λ€.
2-1. makemigrations
μ μλ modelμ databaseμ λ°μνκΈ° μν΄μλ migration λͺ λ Ήμ΄λ₯Ό ν΅ν΄ migration fileμ μμ±νλ€
λ§μ΄κ·Έλ μ΄μ νμΌμ λͺ¨λΈμ λ³κ²½μ¬νμ κΈ°λ‘νλ©°, app λ³λ‘ μλ migrations/ ν΄λμ κΈ°λ‘λλ€. μ΅μ΄μ 0001_initial.py λΌλ νμΌμ΄ μμ±λμ΄ μμ κ²μ΄λ€.
migration fileμ modelμ λ³κ²½μ¬νμ κ΄λ¦¬νλ€
Modeling ν λ΄μ©μ dbμ λ°μ ν μ€λΉλ₯Ό νλ κ²!
2-2. migrate
μμ±λ migration fileμ databaseμ λ°μνκΈ° μν λͺ λ Ήμ΄
μμ κ°μ΄ λ§μ 보μ΄λ κ²μ djangoκ° κΈ°λ³Έμ μΌλ‘ νμ©νκ³ μλ λ°μ΄ν°λ² μ΄μ€ λ§μ΄κ·Έλ μ΄μ νμΌκΉμ§ λ°μλμκΈ° λλ¬Έμ΄λ€
μμΌλ‘λ νλ‘μ νΈ μμ±κ³Ό λμμ
python manage.py migrate
λ₯Ό νμ!
Migration Flow
λ§μ΄κ·Έλ μ΄μ μμ±
λ§μ΄κ·Έλ μ΄μ DB λ°μ μ¬λΆ νμΈ
λ§μ΄κ·Έλ μ΄μ μ λμλλ SQLλ¬Έ μΆλ ₯
λ§μ΄κ·Έλ μ΄μ νμΌμ λ΄μ©μ DBμ μ΅μ’ λ°μ
+
admin λ±λ‘
Django ORM
κΈ°λ³Έμ μΈ λ°μ΄ν°λ² μ΄μ€ μ‘°μμ CRUD(Create, Read, Update, Delete) operation μ΄λΌκ³ νλ€.
ORM (Object Relational Mapping)
DBμ OOP language κ°μ νΈνλμ§ μλ dataλ₯Ό λ³ννλ programming κΈ°λ²
ORMμ dbμ μ μ₯λμ΄ μλ κ°μ objectλ‘ mapping ν΄μ€λ€!
Python κ°μ²΄ μ‘°μ(method νΈμΆ)μΌλ‘ dbλ₯Ό μ‘°μνλ κ²!
Django shell
python interactive interpreterλ₯Ό django νλ‘μ νΈμ λ§κ² μΈ μ μλ κΈ°λ₯
μΆκ°μ μΈ ν¨ν€μ§ μ€μΉλ₯Ό ν΅ν΄ νΈνκ² νμ©ν μ μλ€.
django-extensions λ django κ°λ°μ μμ΄μ μ μ©ν κΈ°λ₯λ€μ κΈ°λ³Έμ μΌλ‘ μ 곡νλ€.
ipython
μ μΈν°λ ν°λΈ μμ μ‘°κΈ λ νΈνκ² νμ©νκΈ° μν΄μ μ€μΉ
μ€μΉ μ΄νμ, settings.py μ λ€μμ λ΄μ©μ μΆκ°νλ€. (μ½€λ§ μ μ)
κ·Έλ¦¬κ³ μ΄μ λΆν°λ μλμ λͺ λ Ήμ΄λ₯Ό μ¬μ©νλ€.
1. μμ±
2. μ‘°ν
μ 체 λ°μ΄ν° μ‘°ν
λ¨μΌ λ°μ΄ν° μ‘°ν
λ¨μΌ λ°μ΄ν° μ‘°νλ κ³ μ ν κ°μΈ idλ₯Ό ν΅ν΄ κ°λ₯νλ€.
id == pk!
μ€λ³΅μ λΆννλ€
3. μμ
μμ μ΄ λμλμ§ νμΈνκΈ° μν΄μ λ°μ΄ν° μ‘°νλ₯Ό λ€μ ν΄λ³΄μ
4. μμ
Admin νμ΄μ§ νμ©
1. κ΄λ¦¬μ κ³μ μμ±
2. admin λ±λ‘
admin νμ΄μ§λ₯Ό νμ©νκΈ° μν΄μλ app λ³λ‘ μλ admin.pyμ μ μ λμ΄μΌ νλ€
3. νμΈ
/admin/ urlλ‘ μ μνμ¬, κ΄λ¦¬μ κ³μ μΌλ‘ λ‘κ·ΈμΈ
+
Tips
Fat Model
MVC
M (C) V
MTV
M (V) T
-> Make model fat!!!!
Last updated