์ฅ๊ณ ,, ๋๋ฌด ์ด๋ ต๋ค. ๋ฐ๋ผ ์น๊ธฐ๋ง ํ๋ ์ค์ธ๋ฐ ์ด๋ป๊ฒ ์ดํด๋ฅผ ํด์ผํ ์ง ๋ง๋งํด์ ๋ฒจ๋ก๊ทธ ์ ๋ฆฌํ๋ฉด์ ๋ค์ ํํ ๋ฆฌ์ผ์ ์งํํด๋ณด๋ ค๊ณ ํ๋ค.
๋ฏธ๋์ฝ๋ค3์ด ๊น๋ ค์๋ค๋ ์ ์ ํ์ ์ ๋ฆฌํ์๋ค.
Django๋ python์ผ๋ก ๋ง๋ค์ด์ง ๋ฌด๋ฃ ์คํ ์์ค ์น ํ๋ ์์ํฌ๋ค
conda create -n myenv python=3.8 django
# ๊ฐ์ ํ๊ฒฝ ์์ฑ ์ ํ์ด์ฌ ๋ฒ์ ์ ์ง์ ํด์ค์ผ ํ๋ค. ์ง์ ํ์ง ์์ผ๋ฉด conda์
๊ธฐ๋ณธ์ผ๋ก ํฌํจ๋ ํ์ด์ฌ ๋ฒ์ ์ผ๋ก ์คํ ๋จ !
conda env list
# ๊ฐ์ ํ๊ฒฝ ๋ฆฌ์คํธ ๋ณด๊ธฐ
# ๊ฐ์ ํ๊ฒฝ ์์ *์ด ํ์๋์ด ์๋ค.
--------------------
# conda environments:
#
base * /Users/soohyunlee/miniconda3
django_first /Users/soohyunlee/miniconda3/envs/django_first
mysite /Users/soohyunlee/miniconda3/envs/mysite
--------------------
conda activate "๊ฐ์ํ๊ฒฝ์ด๋ฆ"
# ๊ฐ์ํ๊ฒฝ ํ์ฑํ. ํ์ฑํ ์ํจ ํ ํ๋ก์ ํธ ์งํํ๋ฉด ๋๋ค.
conda install django
# ์ฅ๊ณ ์ค์น
python -m django --version
# ์ฅ๊ณ ๋ฒ์ ์ ํ์ธํ ์ ์๋ ๋ช
๋ น์ด
ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด๋ณด์! ์ฅ๊ณ ํํ ๋ฆฌ์ผ1
django-admin startproject mysite
# ํ์ฌ ๋๋ ํ ๋ฆฌ์ mysite ๋๋ ํ ๋ฆฌ ์์ฑ
# ๋๋ mysite๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ด๋ฆ์ธ mysite1 ์ผ๋ก ์์ฑ
ํฐ๋ฏธ๋์ tree ์
๋ ฅ
> tree ๋ ๋ฐ๋ก ์ค์นํด์ค์ผ ํธ๋ฆฌ๊ตฌ์กฐ๋ก ๋ณผ ์ ์๋ค
(์ค์น๋ฐฉ๋ฒ:brew install tree > brew ์ค์น ์๋์ด ์์ผ๋ฉด homebrew ๋จผ์ !)
์๋ ์ด๋ฏธ์ง์ฒ๋ผ ํธ๋ฆฌ ๊ตฌ์กฐ ํ์ธํ ์ ์๋ค.
ํ๋ก์ ํธ๊ฐ ์ ๋ง๋ค์ด์ก๊ณ , ์ ๋๋ก ๋์ํ๋์ง ํ์ธํด๋ณด์
manage.py
ํ์ผ์ ์คํ ํ ๊ฑด๋ฐ, ์ด ํ์ผ์ ํญ์ ์ด ํ์ผ์ด ์๋ ํด๋์์ ์คํํด์ผ ํ๋ค. ์์ ๊ฒฝ์ฐ mysite ํด๋์์ ์คํ !!
๊ฐ ํ์ผ์ ๋ํ ์ ๋ฆฌ๋ ๋ฐ๋ก ์์ฑํ๊ฒ ์ง๋ง manage.py๋ ํ๋ก์ ํธ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ช
๋ น์ด ๋ชจ์์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
python manage.py runserver
# ์๋ฒ ์ ๋๋ก ์๋ํ๋์ง ํ์ธ
์ด์ ์๋ค๋ฉด control + c ๋๋ฌ์ ๋์ค๋ฉด ๋๋ค.
http://127.0.0.1:8000 ๋ฅผ ์ด๋ฉด ์ ๋๋ก ์๋ํ๋์ง ํ์ธ ๊ฐ๋ฅํ๋ค.
8000๋ฒ์ ์ธ๋ถ์์ ์ ๊ทผ์ด ์๋๋ฉฐ, ์ธ๋ถ์์ ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ํ๋ ค๋ฉด runserver 0.0.0.0:8080 ์ผ๋ก ์ ์ํด์ผํ๋ค.
python manage.py startapp polls
# polls ๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง app ์์ฑ
# ์์ ๋๋ ํ ๋ฆฌ์์ ์
๋ ฅํด์ผ ํ๋ฉฐ ์์ ํธ๋ฆฌ๊ตฌ์กฐ ๊ธฐ์ค mysite ์์ ์
๋ ฅ
๐ ํ๋ก์ ํธ vs ์ฑ ์ฐจ์ด๋?
* ํ๋ก์ ํธ : ํ๋์ ์น ์ฌ์ดํธ๋ผ๊ณ ๋ณด๋ฉด ๋จ
django-admin startproject ํ์ผ๋ช
: ํ๋ก์ ํธ ์์ฑ
* ์ฑ : ์น ์ฌ์ดํธ ์์ ์๋ ๊ธฐ๋ฅ(ex. ๋ค์ด๋ฒ ๋ด ๋ธ๋ก๊ทธ, ๋ด์ค)
: ์ฑ์ ๋ค๋ฅธ ํ๋ก์ ํธ์์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค
./manage.py startapp commnunity : ์ฑ ์์ฑ
tree ํ์ธ
โโโ db.sqlite3
โโโ manage.py
โโโ mysite1
โ โโโ __init__.py
โ โโโ __pycache__
โ โ โโโ __init__.cpython-38.pyc
โ โ โโโ settings.cpython-38.pyc
โ โ โโโ urls.cpython-38.pyc
โ โ โโโ wsgi.cpython-38.pyc
โ โโโ asgi.py
โ โโโ settings.py
โ โโโ urls.py
โ โโโ wsgi.py
โโโ polls
โโโ __init__.py
โโโ admin.py
โโโ apps.py
โโโ migrations
โ โโโ __init__.py
โโโ models.py
โโโ tests.py
โโโ views.py
cd polls
#polls ํ์ผ๋ก ๊ฐ์ค
vim views.py
# views ํ์ผ ์ด์ด์ค
์๋ ๋ด์ฉ ์ ๋ ฅ
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
i ์
๋ ฅํด์ ์์ ํ๋ฉด ๋ง๋ค๊ธฐ
> ๋ค ์
๋ ฅํ๋ฉด : W Q ์ฐจ๋ก๋ก ์
๋ ฅํด์ ์ ์ฅ ๋ฐ ๋ซ๊ธฐ
view๋ฅผ ํธ์ถํ๋ ค๋ฉด url์ ๋งคํ์ ํด์ผํ๋ค.
polls/urls.py์์ ์๋ ๋ด์ฉ ์
๋ ฅ
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
mysite/urls.py์์ ์๋ ๋ด์ฉ ์ ๋ ฅ
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
Include ๋ url์ ํฌํจํ ๋ ํญ์ ์ฌ์ฉํด์ผ ํ๋ค.
url() ํจ์๋ regex์ viewํจ์๊ฐ ํ์๋ก ์ ๋ ฅ๋์ด์ผ ํฉ๋๋ค.mysite/urls.py ๋ด์ urlpatterns์ polls.urls๊ฐ include๋์์ผ๋ฉฐ, ์น์์ polls/๋ผ๋ url ๋ก ๋ค์ด๊ฐ๋ฉด view.index๊ฐ ์คํ๋๋ค.
python manage.py runserver
# ์
๋ ฅํด์ ์ ๋๋ก ์๋ํ๋์ง ํ์ธํ๊ธฐ