์์
๋๋ ํ ๋ฆฌ ๋ง๋ค๊ธฐ
VENV ์์ฑ & ๊ฐ์ํ๊ฒฝ ์คํ
๋์ถฉ ํ์ด์ฌ pip ํจํค์ง์ ๋ฒ์ ํธํ๋ฌธ์ ๋๋ฌธ์ ๊ฐ์ํ๊ฒฝ์์ ๊ฐ๋ฐํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๊ฐ์ ํ๊ฒฝ์ ๋
๋ฆฝ๋ ๊ณต๊ฐ์ ๋ง๋ค์ด์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค. ๊ฐ์ ํ๊ฒฝ์์ pip๋ก ํจํค์ง๋ฅผ ์ค์นํ๋ฉด ๊ฐ์ ํ๊ฒฝ ํด๋(๋๋ ํฐ๋ฆฌ)์ Lib/site-packages ์์ ํจํค์ง๋ฅผ ์ ์ฅํด์ค๋ค.
Django๊ฐ๋ฐ์ ํ ๋๋ ๋ฌด์กฐ๊ฑด! ๊ฐ์ํ๊ฒฝ๋ถํฐ ํค๊ณ ์์ํ์.
python -m venv ๊ฐ์ํ๊ฒฝ๋ช
python -m venv myvenv
Bash
๋ณต์ฌ
๊ฐ์ํ๊ฒฝ ์คํํ๊ธฐ
source myvenv/Scripts/activate
Bash
๋ณต์ฌ
source ๋์ .์ ์
๋ ฅํด๋ ๋๋ค.
๊ฐ์ํ๊ฒฝ ๋๊ธฐ
deactivate
Bash
๋ณต์ฌ
Django ์ค์นํ๊ธฐ
pip install django
Bash
๋ณต์ฌ
Django๋ก ํ๋ก์ ํธ ์์ํ๊ธฐ
์ฒซ๋ฒ์งธ Django ํ๋ก์ ํธ ์์ํ๊ธฐ
django-admin startproject myproject
Bash
๋ณต์ฌ
๋ช
์นญ์ด ํท๊ฐ๋ฆฌ๋ ์์ ํด๋ ์ด๋ฆ์ djangoproject๋ก ๋ณ๊ฒฝํ๋ค.
startproject๋ก ์์ฑ๋ ํ์ผ
Django ์๋ฒ ์๋์ํค๊ธฐ
python manage.py runserver
Bash
๋ณต์ฌ
http://127.0.0.1:8000/ ๋ก ๋ธ๋ผ์ฐ์ ์ฐฝ์ ์ด์ด๋ณด๋ฉด,
๋ก์ผ์ด ๋ ์๊ฐ๋ฉฐ ์ด๋ฐ ํ์ด์ง๊ฐ ๋ฌ๋ค.
์์ ํ์ด์ง๊ฐ ๋จ๋ฉด ์ฑ๊ณต์ ์ผ๋ก ์ฅ๊ณ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ ์๋ฒ๋ฅผ ์๋์ํจ ๊ฒ์ด๋ค.
์๋ฒ๋ฅผ ๋๋ ค๋ฉด ์๋ฒ๊ฐ ์คํ์ค์ธ ํฐ๋ฏธ๋์ฐฝ์์ ctrl+c ๋ฅผ ๋๋ฅด๋ฉด ๋๋ค.
Hello World ํ์ด์ง ๋์๋ณด๊ธฐ
app ๋ง๋ค๊ธฐ
app์ ์๊น ๋ง๋ ํ๋ก์ ํธ์ ๊ตฌ์ฑ ๋จ์์ด๋ค. app์ด ํ๋ก์ ํธ์ ์์ ๋ถ๋ถ๋ค์ด๊ณ , app์ด ๋ชจ์ธ๊ฒ์ด project๋ผ๊ณ ์๊ฐํ๋ฉด๋๋ค.
(app์ ๋ง๋ค๋ ๋ช
๋ น์ ๋ด๋ฆฌ๋ ๊ฒฝ๋ก๋ฅผ ์ ํ์ธํ์. app์ ์ด๋์ ๋ง๋ค์ด๋ ์๊ด์์ง๋ง, ํธ์๋ฅผ ์ํด manage.py๊ฐ ์๋ ํด๋์์ ๋ช
๋ น์ ๋ด๋ฆฌ๋ ๊ฒ์ ์ถ์ฒํ๋ค.)
python manage.py startapp myapp
Bash
๋ณต์ฌ
ํ์ฌ๊น์ง ๋ง๋ค์ด์ง ํด๋ ๋ฐ ํ์ผ๋ค
hello ํด๋ ์์์ ์ผ๋จ ์์์ผ ํ ํ์ผ์ views.py ์ด๋ค. ์์ผ๋ก ํ์ด์ง ๋ง๋ค๊ธฐ ์ํด์๋ ์๋์์์ ๋ฐ๋ผ ์์
ํด์ผํ๋ค๊ณ ์ธ์๋์.
1.
settings.py โ project์๊ฒ app์ ์กด์ฌ ์๋ฆฌ๊ธฐ
2.
templates โ views.py์์ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ฌ์ฉ์์๊ฒ ํ๋ฉด์ ๋ณด์ฌ์ค
3.
views.py โ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์ ์์ฑ
4.
urls.py โ ์์ฒญ์ ๋ง๋ ํจ์๋ฅผ views.py์์ ์ฐพ์ ์์ฒญ ์ ๋ฌ
settings.py โ templates โ views.py โ urls.py ์์ผ๋ก ์ฐ๊ฒฐํ๋ ์์
์ ํ๋ฉด๋๋ค.
1. project์ app์ ์กด์ฌ ์๋ฆฌ๊ธฐ : settings.py
myapp์ด๋ผ๋ app์ ๋ง๋ค์์ง๋ง project๋ ๊ทธ app์ ์กด์ฌ๋ฅผ ์์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ app์ ๋ง๋ค์๋ค๊ณ ๋ฑ๋กํด์ฃผ๋ ์ ์ฐจ๊ฐ ํ์ํ๋ค. settings.pyํ์ผ์ ์ด๋ฉด ์๋์ ๊ฐ์ ์์ญ์ด ์๋ค.
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
Python
๋ณต์ฌ
์ฌ๊ธฐ์ ๋ง๋ app์ ์ถ๊ฐํด์ค๋ค.
INSTALLED_APPS = [
'myapp.apps.MyappConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
Python
๋ณต์ฌ
myapp.apps.MyappConfig ๋ผ๊ณ ์ ์ด์ค๋ค.
myapp ํด๋ ์์ ๋ณด๋ฉด apps.py๋ผ๋ ํ์ผ์ด ์๊ณ , ๊ทธ ํ์ผ์ ์ด์ด๋ณด๋ฉด MyappConfig ๋ผ๋ ํด๋์ค๊ฐ ์ ์๋์ด ์๋ค. ๊ทธ๊ฒ์ ๋ฑ๋กํด์ฃผ๋ ์ ์ฐจ์ด๋ค.
ํ
2. Template ๋ง๋ค๊ธฐ
template์ ์ ์ ๊ฐ ๋ณด๋ ํ๋ฉด์ด๋ผ ์๊ฐํ๋ฉด ๋๋ค. appํด๋์์ templates๋ผ๋ ํด๋๋ฅผ ๋ง๋ค๊ณ ๊ทธ ์์ htmlํ์ผ์ ๋ง๋ค๋ฉด ๋๋ค.
3. ์ฑ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ : views.py์ ํจ์ ๋ง๋ค๊ธฐ
app์ ๊ธฐ๋ฅ์ ๊ตฌํํด์ฃผ๋ ๋ถ๋ถ์ด ์ด views.py์ด๋ค. ์ด์ด๋ณด๋ฉด from์ผ๋ก ์์ํ๋ import ๊ตฌ๋ฌธ๊ณผ ์ฃผ์์ด ์๋ค. ์๋์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ํจ์๋ฅผ ์ ์ํด ์ฃผ๋ฉด ๋๋ค.
from django.shortcuts import render
# Create your views here.
def home(request):
return render(request, 'home.html')
Python
๋ณต์ฌ
์์ฒญ์ด ๋ค์ด์ค๋ฉด home.html ํ์ผ์ ์ด์ด์ฃผ๋ home์ด๋ผ๋ ํจ์๋ฅผ ๊ตฌํํ๋ค. html ํ์ผ(template)์ ์ฐ๊ฒฐํ๊ธฐ ์ํด์๋ ์ด๋ฐ ํจ์์ ๊ตฌ์กฐ๊ฐ ๊ธฐ๋ณธ์ด ๋๋ค.
4. URL ์์ฒญ์ views์ ์ฐ๊ฒฐํ๊ธฐ : urls.py
myproject ํด๋ ์์ urls.py๋ฅผ ์ด๋ฉด ๋ค์์ ์ฝ๋๊ฐ ์๋ค.
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
Python
๋ณต์ฌ
์ฐ์ views.py๋ฅผ ์ฝ์ด์์ผ ํ๋ import๋ฅผ ํด์ค๋ค.
from django.contrib import admin
from django.urls import path
import myapp.views
urlpatterns = [
path('admin/', admin.site.urls),
]
Python
๋ณต์ฌ
hello.views๋ helloํด๋์์ views ํ์ผ์ด๋ผ๋ ๋ป์ด๋ค. ์ด๋ ๊ฒ import ํ์ผ๋ฉด urlpatterns์ path๋ฅผ ์ถ๊ฐํด์ค๋ค.
urlpatterns = [
path('admin/', admin.site.urls),
path('', myapp.views.home, name='home'),
]
Python
๋ณต์ฌ
path๋ 3๊ฐ์ง ์ธ์๋ฅผ ๋ฐ๋๋ค. ๋จผ์ route๋ ๋๋ฉ์ธ ๋ค์ ๋ถ๋ url ๋ถ๋ถ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ๋๋ฒ์งธ๋ ๋ด๊ฐ ์ฐ๊ฒฐํ๊ณ ์ถ์ views์์ ์ ์๋ ํจ์์ด๋ค. hello ํด๋ ์์ views ํ์ผ ์์ home์ด๋ผ๊ณ ์ ์๋ ํจ์๋ฅผ ์คํ์ํค๊ฒ ๋ค๋ ๋ง์ด๋ค.
๋ง์ง๋ง์ ์ ํ name=โhomeโ ์ ์ด path์ ์ด๋ฆ์ home์ด๋ผ ์ ํ๊ฒ ๋ค๊ณ ์ฝ์์ ํ๋ ๋ด์ฉ์ผ๋ก, ์ด๋ ๊ฒ ์ฝ์์ ํ๋ฉด djangoํ๋ก์ ํธ ์ด๋์์๋ home์ด๋ผ๊ณ ๋ถ๋ฌ์ ํธ์ถํด ๋ผ ์ ์๋ค.
๊ฐ๋ฅํ ํจ์์ด๋ฆ๊ณผ path์ name์ ์ผ์น์์ผ์ฃผ๋๊ฒ ์ ์ ๊ฑด๊ฐ์ ์ด๋กญ๋ค.
1.
project๋ฅผ ๋ง๋ค๊ณ ,
2.
app์ ๋ง๋ค๊ณ ,
3.
project์ app์ ์ฐ๊ฒฐํ๊ณ ,
4.
app์์ templates ํด๋๋ฅผ ๋ง๋ค๊ณ ๊ทธ ์์ htmlํ์ผ(template)์ ๋ง๋ค๊ณ ,
5.
app์์ views.py๋ฅผ ๋ง๋ค๊ณ ,
6.
urls.py์์ templates์์ htmlํ์ผ๊ณผ ์ฐ๊ฒฐํด์ฃผ๋ ๊ณผ์ ์ด๋ค.
๊ทธ ๊ฒฐ๊ณผ..