Search

μž₯κ³  μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 생성

ν”„λ‘œμ νŠΈ 생성 및 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 생성

ν”„λ‘œμ νŠΈ 생성

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.
μš”μ²­μ„ 맀핑할 url 을 urls.py νŒŒμΌμ— μ„€μ •
2.
μš”μ²­κ²½λ‘œμ™€ 맀핑해놓은 view ν•¨μˆ˜λ₯Ό views.py νŒŒμΌμ— μ •μ˜

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
볡사