νλ‘μ νΈ μμ± λ° μ ν리μΌμ΄μ μμ±
νλ‘μ νΈ μμ±
django-admin startproject mysite
Shell
볡μ¬
νλ‘μ νΈ μ€μ
settings.py
# κ°λ°λͺ¨λ
DEBUG = True
# νΈμ€νΈ μ€μ
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
# μ ν리μΌμ΄μ
μΆκ°
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
# νμμ‘΄ μ€μ
TIME_ZONE = 'Asia/Seoul'
Shell
볡μ¬
κΈ°λ³Έ ν μ΄λΈ μμ±
β’
migrate λͺ
λ Ήμ λ°μ΄ν°λ² μ΄μ€μ λ³κ²½ μ¬νμ μ μ©νλ λͺ
λ Ήμ
λλ€.
β’
models.py μ λͺ¨λΈμ λ³κ²½ν κ²½μ° migrate λͺ
λ Ήμ μ€νν΄μΌ λ³κ²½μ¬νμ΄ DBμ λ°μλ©λλ€.
python manage.py migrate
Shell
볡μ¬
κ΄λ¦¬μ(μνΌμ μ ) μμ±
python manage.py createsuperuser
Shell
볡μ¬
ν μ΄λΈ μ μ
models.py
from django.db import models
# from .validators import validate_com
# Create your models here.
Shell
볡μ¬
Admin μ¬μ΄νΈμ λ°μ
Django νλ‘μ νΈλ₯Ό μμ±νλ©΄ κΈ°λ³Έμ μΌλ‘ Usersμ GroupsλΌλ ν
μ΄λΈμ΄ μλμΌλ‘ μμ±λ©λλ€.
django.contrib.auth μ ν리μΌμ΄μ
μ μ μλ λͺ¨λΈλ‘, νλ‘μ νΈ μμ± ν, λ§μ΄κ·Έλ μ΄μ
μμ
μ νλ©΄ λ°μ΄ν°λ² μ΄μ€μ λ°μλ©λλ€. λ°λΌμ models.py νμΌμ νΉλ³ν μ½λλ₯Ό μμ±νμ§ μμλλ°λ, λ§μ΄κ·Έλ μ΄μ
μ νλ©΄ λ°μ΄ν°λ² μ΄μ€μ μ μ©λλ λ‘κ·Έλ₯Ό λ³Ό μ μμ΅λλ€.
Usersμ GroupsλΌλ ν
μ΄λΈdl μμ±λλλ‘ λ§μ΄κ·Έλ μ΄μ
μ μ§νν΄λ³΄κ² μ΅λλ€.
μ μν ν μ΄λΈ λ§μ΄κ·Έλ μ΄μ
python manage.py makemigrations
python manage.py migrate
Shell
볡μ¬
β’
makemigrations : λ°μ΄ν°λ² μ΄μ€ λ§μ΄κ·Έλ μ΄μ
νμΌμ μμ±
β’
migrate : λ°μ΄ν°λ² μ΄μ€ λ§μ΄κ·Έλ μ΄μ
μ μ μ©νκ³ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§λ₯Ό μ
λ°μ΄νΈ
κ΄λ¦¬μ νμ΄μ§ νμΈνκΈ°
β’
μλ² μ€ννκΈ°
python manage.py runserver
Shell
볡μ¬
β’
κ΄λ¦¬μ νμ΄μ§ μ μνκΈ°
http://localhost:8000/admin
Shell
볡μ¬
λ‘κ·ΈμΈ νμ΄μ§κ° λμ΅λλ€. μμ±ν΄λ μνΌμ μ λ‘ λ‘κ·ΈμΈν΄λ΄
λλ€.
ID : admin
PW : 123456 μΌλ‘ λ‘κ·ΈμΈν©λλ€.
μ₯κ³Όλ κ΄λ¦¬μ νμ΄μ§μμ κΈ°λ³Έμ μΌλ‘ CRUD κΈ°λ₯μ μ§μν©λλ€. λ΄μ₯λ κ΄λ¦¬μ μΈν°νμ΄μ€μΈ Django Admin μ ν΅ν΄μ, κ°λ° λ° ν
μ€νΈμ μ μ©ν κΈ°λ₯μ μ§μν΄μ€λλ€. μ΄ νμ΄μ§μμ Add, Change λ²νΌμ λλ¬ λ°μ΄ν°λ₯Ό μΆκ°, μμ μ ν μ μμ΅λλ€.
CRUD λ?
Create, Read, Update, Delete μ μ½μλ‘ λ°μ΄ν°λ² μ΄μ€μ λ°μ΄ν°λ₯Ό μμ±, μ‘°ν, μμ , μμ νλ κΈ°λ₯μ λ§ν©λλ€.
MVT ν¨ν΄
MVT(Model, View, Template)
β’
λ°μ΄ν°, νλ©΄, μ μ΄λ‘ λΆλ¦¬νμ¬, μννΈμ¨μ΄λ₯Ό κ°λ°νλ μν€ν
μ² ν¨ν΄
β’
Model : λ°μ΄ν°λ₯Ό μ μνκ³ , λ°μ΄ν°λ² μ΄μ€μμ μνΈ μμ©μ κ΄λ¦¬
- ꡬν νμΌ : models.py
β’
View : μ¬μ©μμ μμ²μ μ²λ¦¬νκ³ , λ°μ΄ν°λ₯Ό κ°μ Έμμ ν
νλ¦Ώμ μ λ¬
- ꡬν νμΌ : views.py
β’
Template : ν
νλ¦Ώμ μ¬μ©μμκ² λ³΄μ¬μ§λ νλ©΄
- ꡬν νμΌ : index.html
MVT μ½κ² μ΄ν΄νκΈ°
MVT ν¨ν΄μ μ μ©νμ§ μκ³ κ°λ°νλ€λ©΄, λ‘μ§, νλ©΄, λͺ¨λΈμ΄ λͺ¨λ νλμ μ½λ νμΌμ μμ±λκ² λλ€. κ·Έλ¬λ©΄, μΉ νΌλΈλ¦¬μ
κ° νλ©΄μ HTML, CSS λ₯Ό μ¬μ©νμ¬ μ½λλ₯Ό μμ±ν λμ, νλ‘ νΈμλ κ°λ°μμ λ°±μλ κ°λ°μλ κ°λ§ν κΈ°λ€λ¦¬κ³ μκ±°λ, κ°κ° λ°μ΄ν°λ₯Ό κ°μ Έμ νλ©΄μ μ°κ²°νλ μ½λ, λΉμ¦λμ€ λ‘μ§μ μμ±ν μ½λλ₯Ό μμ
νκ³ μμ κ²μ΄λ€.
μ΄λ κ² κ°μ μμ
ν μ½λλ₯Ό, λ°±μλ κ°λ°μνν
λμ Έμ£Όκ³ μΉ νΌλΈλ¦¬μ
μ νλ‘ νΈμλ κ°λ°μλ ν΄κ·Όνλ€. κ·Έλ¬λ©΄ λ°±μλ κ°λ°μλ λ¨μμ 3λͺ
μ΄ μμ
ν μ½λλ₯Ό λΉκ΅νμ¬ μΌμΌμ΄ μ·¨ν©νλ μμ
μ νλ©΄μ μΌκ·Όμ νκ² λλ€.
κ·Έλ°λ°, MVT ν¨ν΄μ μ μ©νμ¬ κ°λ°νλ€λ©΄, λͺ¨λκ° μμ
ν΄μΌν μ½λκ° μ΄λ―Έ λΆλ¦¬λμ΄ μκΈ° λλ¬Έμ κ°μ μμ
ν μ½λλ₯Ό μ»€λ° & νΈμνκ³ μΉΌν΄κ·Όν μ μλ€.
MVT ν¨ν΄μ μ₯μ
β’
λͺ¨λΈ, λ·°, ν
νλ¦Ώμ λΆλ¦¬νμ¬ κ°λ°νκΈ° λλ¬Έμ μν κ³Ό μ±
μμ λͺ
νν ν μ μμ
β’
μ½λμ μ μ§λ³΄μμ±κ³Ό μ¬μ¬μ©μ± ν₯μ
β’
λ°±μλ(λͺ¨λΈ&λ·°) κ°λ°κ³Ό νλ‘ νΈμλ(ν
νλ¦Ώ)μ λΆλ¦¬νμ¬ κ°λ°νκΈ° λλ¬Έμ, μ¬λ¬ νλ‘ νΈμλ κΈ°μ λ‘ λ³ννμ¬ μ½κ² ν΅ν©ν μ μμ
View & Template κ°λ°
View
λ·°λ URL μμ²μ λ°μμ μ¬μ©μμ μμ²μ μ²λ¦¬νκ³ μλ΅ν ν
νλ¦Ώ(νλ©΄)μ μ°κ²°ν΄μ£Όλ μν μ μννλ€.
μ¬μ©μμ μμ²μ λ°λΌμ νμ κ°μ λ΄μ©μ νμ΄μ§λ₯Ό μλ΅ν΄μ€ μ λ μκ³ , μ¬μ©μκ° λ³΄λ΄μ€ λ°μ΄ν° λ° μ‘°κ±΄μ λ°λΌ λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°λ₯Ό κ°μ Έμ μμ²μ λ°λΌ λ€λ₯Έ λ΄μ©μ νμ΄μ§λ₯Ό μλ΅ν μλ μλ€.
μ μ νμ΄μ§ : νμ κ°μ λ΄μ©μ νμ΄μ§
λμ νμ΄μ§ : μμ²μ μμ λ° μ‘°κ±΄μ λ°λΌ, λ€λ₯Έ λ°μ΄ν°λ₯Ό 보μ¬μ£Όλ νμ΄μ§
View ꡬννκΈ°
1.
2.
URL conf
urls.py
from django.urls import path
from .views import index_view
urlpatterns = [
path('', index_view, name='index'),
]
Shell
볡μ¬
β’
path( [URL], λ·°ν¨μ, name=βURLμ΄λ¦β )
β’
ββ (http://localhost:8000) λ£¨νΈ κ²½λ‘λ₯Ό μμ²νλ©΄ index_view() ν¨μλ‘ μ€ννλλ‘ μ°κ²°νκ³ , URL ν¨ν΄μ μ΄λ¦μ index λ‘ μ§μ νλ€.
λ©μΈνλ©΄ - index.html
λ·° ν¨μ μμ±
views.py
from django.shortcuts import render
def index_view(request):
return render(request, 'index.html')
Shell
볡μ¬
β’
render( μμ²κ°μ²΄, ν
νλ¦Ώ μ΄λ¦ )
β’
μμ²κ°μ²΄λ₯Ό μ§μ ν΄μ£Όκ³ , μλ΅ν ν
νλ¦Ώ(νλ©΄) νμΌ μ΄λ¦μ μ§μ
β’
HttpResponse κ°μ²΄λ₯Ό λ°ν
β¦
ν΄λΌμ΄μΈνΈμκ² μλ΅ν λ΄μ©
β¦
ν
νλ¦Ώ(νλ©΄)μ λ λλ§ν κ²°κ³Ό ν¬ν¨
ν νλ¦Ώ μμ±
index.html
<!DOCTYPE html>
<html>
<head>
<title>My Site</title>
</head>
<body>
<h1>Hello Django~!</h1>
<h2>index.html</h2>
</body>
</html>
Shell
볡μ¬