์ฅ๊ณ ๊ธฐ์ด ํํ ๋ฆฌ์ผ์ ๊ณต๋ถํ๊ณ ๋๋๊น, ์ฅ๊ณ ๊ฐ ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ์กฐ.....๊ธ์ ์๊ฒ ๊ฐ์ง๋ง์๋ ์์ง์ ์ดํด๊ฐ ์๋๋ ๋ถ๋ถ๋ ์๊ณ ๋ง์ด ๋ถ์กฑํ๋ค๊ณ ๋๊ปด์ง๋ค.
๊ทธ๋์ ์ฅ๊ณ ๋ฅผ ๋์ฑ ์ตํ๋ ์ฐ์ต์ ์ํด ๊ฐ์๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ธ์คํ๊ทธ๋จ์ ํด๋ก ์ฝ๋ฉํด๋ณด๋ ค๊ณ ํ๋ค!
์์ํ๊ธฐ ์์ ์ฅ๊ณ ์ ๊ตฌ์กฐ์ ๋ํด ๊ฐ๋จํ๊ฒ ์์๋ณด์
์ฅ๊ณ ๋ MVT
๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
M (Model)
V (View)
: ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ด๋ค.
T (Templates)
: ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ๋ถ๋ถ, html์ด๋ css ํ์ผ์ ๊ด๋ฆฌํ๋ค.
์ฅ๊ณ ํ๋ก์ ํธ๋ฅผ ์์ํ๊ธฐ ์์์ ๊ฐ์ํ๊ฒฝ(venv)
์ ์ธํ
ํด์ฃผ๋๋ก ํ๊ฒ ๋ค.
python -m venv venv
๋ง๋ค์ด์ค ๊ฐ์ํ๊ฒฝ์ ํ์ฑํ์ํค๊ณ , ์ฅ๊ณ ๋ฅผ ์ค์นํด์ค๋ค.
venv\scripts\activate
(venv) pip install django==1.8
๊ทธ ๋ค์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฅ๊ณ ํ๋ก์ ํธ๋ฅผ ์ํ ๊ธฐ๋ณธ๊ณจ๊ฒฉ์ ๋ง๋ค์ด์ฃผ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ค.
(venv) django-admin startproject mysite .
๊ทธ๋ผ ๋ค์๊ณผ ๊ฐ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๊ฐ ๋ง๋ค์ด์ง๋ค.
instagram/
instagram/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
venv/
manage.py
๋ง๋ค์ด์ค ์ฅ๊ณ ํ๋ก์ ํธ๋ฅผ ์คํํ๋ค.
(venv) python manage.py runserver
์๋ฒ๋ฅผ ์คํํด์ฃผ๊ณ http://127.0.0.1:8000/
์ ๋ค์ด๊ฐ๋ฉด ์ฅ๊ณ ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํด์ฃผ๋ ํ์ด์ง๋ฅผ ํ์ธํ ์ ์๋ค.
์ด๋ ํด๋น ip์ฃผ์๊ฐ ์๋ฏธํ๋ ๊ฒ์ ์์๋ณด์๋ฉด, ๋ค์๊ณผ ๊ฐ๋ค.
127.0.0.1
: localhost๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ, ์๊ธฐ์์ ์ธ ๋์ ์ปดํจํฐ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. :8000
: port๋ผ๊ณ ํ๋ฉฐ, 8000์ ํ๊ณ ๋ค์ด์ค๋ฉด ์ฅ๊ณ ๋ฅผ ๋ณด์ฌ์ค๋ค.main.html
ํ์ผ ๋ง๋ค๊ธฐ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณต๋๋ ํ์ด์ง๊ฐ ์๋ ๋์ ํ์ด์ง๋ฅผ ๋ง๋ค์ด ์ฃผ๊ธฐ ์ํด
templates/instagram
๋๋ ํ ๋ฆฌ์ htmlํ์ผ์ ๋ง๋ค์ด์ค๋ค.
instagram/
instagram/
templates/
instagram/
main.html
venv/
manage.py
- templates/instagram/main.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>์ฌ๊ธฐ์ ํ์ดํ์ ์ ์ต๋๋ค.</title>
</head>
<body>
<h1>์ ๋ชฉ ํ
์คํธ๋ฅผ ์ ์ต๋๋ค.</h1>
<p>์ผ๋ฐ ํ
์คํธ๋ฅผ ์ ์ต๋๋ค.</p>
<div>
<button>์ด๊ฑด ๋ฒํผ์
๋๋ค.</button>
</div>
</body>
</html>
์ด๋ ๊ฒ main.html
์ ๋ง๋ค์ด ์คฌ์ง๋ง, ์๋์ผ๋ก ์นํ์ด์ง๊ฐ ์์ ๋์ง๋ ์๋๋ค.
ํด๋น url
์ ํธ์ถํ์ ๋ main.html
ํ์ด์ง๋ฅผ ์ด์ด์ค ์ ์๋ ์ฐ๊ฒฐ๊ณ ๋ฆฌ๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ฌ์ฉ์์๊ฒ main.html
์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด์๋ view์์ ์ด๋ ํ ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ ํ๋ค.
์ด๋ urls.py
๋ผ๋ ํ์ผ์ ๋ง๋ค์ด์ค์ผ ํ๋ค.
urls.py
ํ์ผ์ ํตํด์ ์ฌ์ฉ์๊ฐ ์ด๋ค url๋ก ์ ์ํ์ ๋ ์ด๋ค
view์ ์๋ ํจ์๋ฅผ ์คํ์ํฌ๊น, ์ด๋ค htmlํ์ผ์ ๋ณด์ฌ์ค๊น๋ฅผ ์ ํํ ์ ์๋ค.
๋ฐ๋ผ์ view.py
์ urls.py
ํ์ผ์ ๋ง๋ค์ด ์ฃผ๋๋ก ํ๋ค.
views.py
ํ์ผ ๋ง๋ค๊ธฐviews.py
๋ฅผ ๋ง๋ค์ด์ฃผ๊ธฐ ์ด์ ์ ํ๊ฐ์ง ์ค์น๋ฅผ ํด์ฃผ๋ ค๊ณ ํ๋ค.
์ฅ๊ณ ์์ REST
๋ฅผ ์ฐ๊ธฐ ์ํ ๋ํ์ ์ธ ํด์ด ์ฅ๊ณ rest ํ๋ ์์ํฌ๋ฅผ ์ค์นํด์ค๋ค.
(venv) pip install djangorestframework
์ค์น๋ฅผ ๋ง์ณค์ผ๋ฉด, view.py
๋ฅผ ์์ฑํด ์ฃผ๋๋ก ํ๋ค.
- instagram/view.py
from django.shortcuts import render
from rest_framework.views import APIView
class Main(APIView):
def get(self, request):
return render(request, "instagram/main.html")
์ฌ๊ธฐ์ APIView
๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์๊น django rest framework
๋ฅผ ์ค์นํด์ค ๊ฒ์ด๋ค.
rest framework
๋ผ๋ ํจํค์ง ์์ APIView
๋ผ๋ ํจ์๊ฐ ์๋๋ฐ, ์ด๊ฒ์ ํตํด rest ํธ์ถ์ ํ ์ ์๋๋ก ๋ง๋ค์ด ์ค๋ค.
urls.py
ํ์ผ ๋ง๋ค๊ธฐ์นํ์ด์ง๊ฐ ๋ณด์ฌ์ง๋ ์ฌ์ดํด์ urls
์์ views
๋ก ๊ฐ์ templates
์ ์๋ main.html
์ ์คํ์ํค๋ ์์์ด๋ค.
๋ฐ๋ผ์ urls.py
๋ฅผ ๋ง๋ค์ด ์ฃผ๋๋ก ํ๊ฒ ๋ค.
- instagram/urls.py
from django.contrib import admin
from django.urls import path
from instagram.views import Main
urlpatterns = [
path('admin/', admin.site.urls),
path('main/', Main.as_view()) # url ๋ค์ main์ ์
๋ ฅํ์ ๋, Main ํด๋์ค์ ๋ทฐ๋ฅผ ์ฌ์ฉ
]
์ด๋ ๊ฒ ์์ฑํด์ค ๋ค ์๋ฒ๋ฅผ ํ์ธํด๋ณด์๋๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์๋ค.
error
ํด๊ฒฐ (no such table: django_session)
no such table: django_session
๋ผ๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
ํด๋น ์๋ฌ์ ๋ํด ๊ตฌ๊ธ๋ง ํด๋ณด๋,
py manage.py runserver
๋ช
๋ น์ด๋ก ์๋ฒ ์คํ ํ ์๋์ผ๋ก ์ถ๊ฐ๋ ํ
์ด๋ธ ์ค django_session
์ด ์์ด์ ๋ฐ์ํ ์๋ฌ๋ผ๊ณ ํ๋ค.
์๋ฌ ํด๊ฒฐ์ ์ํด์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ migrate
ํด์ค ๋ค ์๋ฒ๋ฅผ ๋ค์ ์คํ ํด์ฃผ๋ฉด ๋๋ค!
python manage.py migrate
์๋ฌ๋ฅผ ํด๊ฒฐํ๊ณ ์๋ฒ๋ฅผ ํ์ธํด๋ณด๋ http://127.0.0.1:8000/main/
url์ ํตํด ๋ด๊ฐ ๋ง๋ค์ด์ค main.html
์ด ๋ณด์ฌ์ง๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
app
์ถ๊ฐํ๊ธฐ์ฅ๊ณ ์์๋ ์ฑ ๋จ์๋ก ์ฝ๋๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.
์ฑ ๋จ์๋ก ๊ด๋ฆฌํ๋ ์ด์ ๋ ์ธ์คํ๊ทธ๋จ์ ์๊ฐํด๋ณด์๋ฉด, ํผ๋์ ๊ดํ ์์ค๊ฐ ์์ ๊ฒ์ด๋ฉฐ, ์ข์์์ ๊ดํ ์์ค, ๋๊ธ์ ๊ดํ ์์ค ๋ฑ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ ๊ฒ์ด๋ค.
์ด๊ฒ๋ค์ ํ๋์ ์์คํ์ผ์์ ๊ด๋ฆฌํ๋ค ๋ณด๋ฉด ์์คํ์ผ์ด ์์ฒญ ์ปค์ง๊ธฐ ๋๋ฌธ์
์ฅ๊ณ ์์๋ ์์ค์ฝ๋๋ฅผ ๋ถํ ํ์ฌ ์ฑ๋จ์๋ก ๊ด๋ฆฌํ ์ ์๋๋ก ์ ๊ณตํ๋ค.
์ด๋ ์ฑ์ ๊ธฐ๋ฅ๋ณ๋ก ๋๋ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ข๋ค.
์ง๊ธ์ content
์ user
๋ผ๋ ์ฑ์ ๋ง๋ค์ด ์ฃผ๋ ค๊ณ ํ๋ค.
(venv) python manage.py startapp content
(venv) python manage.py startapp user
๊ทธ๋ฌ๋ฉด ๋ง๋ค์ด์ค ์ฑ์ ๋ํ ํด๋๊ฐ ์ถ๊ฐ๋จ์ ํ์ธํ ์ ์๋ค.
instagram/
content/
instagram/
user/
templates/
venv/
manage.py
๋ง๋ค์ด์ค ์ฑ์ ๋ํด ์ฅ๊ณ ์์ ์ฑ์ด๋ผ๊ณ ์ธ์ํ ์ ์๋๋ก ๋ฑ๋ก์ ํด์ค์ผํ๋ค.
settin.py
ํ์ผ์ ์ด๊ณ INSTALLED_APPS
์ ์ถ๊ฐํด์ค๋ค.
- instagram/setting.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'content',
'user',
'instagram'
]
๐ ์ฐธ๊ณ
๊ฐ์
๊ฐ์์๋ฃ
error : no such table: django_session