Model
Web Browser --> URL Dispatcher (요청된 url을 분석하고 적합한 view로 보내줌) --> View(어디서 어떤 데이터를 가공 할지을 알려주면) --> Model(에서 database와 연결을하고 data를 가져옵니다) --> Database --> Model --> View(에서 실질적으로 client 에게 보여줄 data를 template에게 전송) --> Template가 javascript 나 html 같은걸로 UI만들어서 Web Browser로 넘겨줍니다.
-프로젝트 생성
$django-admin startproject tutorial
-app 생성
$./manage.py startapp community
1.프로젝트 내부에 다수의 app생성
manage.py
-프로젝트 관리 명령어 모음
-주요 명령어
1.startapp -앱생성
2.runserver -서버실행
3.createsuperuser -관리자 생성
4.makemigrations app -app의 모델 변경 사항 체크
5.migrate -변경 사항을 DB에 반영
6.shell -쉣을 통해 데이터를 확인
7.collectstatic -static파일을 한 곳에 모음
-ex) ./manage.py runserer 0.0.0.0:8080
-outer mysite: a container for my project.(이름 상관 없음)
-manage.py: Django 프로젝트와 다양한 방법으로 상호 작용하는 커맨드 라인의 유틸리티
-mysite/: 프로젝트를 위한 실제 python 패키지들이 저장됨.
-init.py: init python 에게 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일.
-setting.py: 현재 Django프로젝트의 환경 및 구성을 저장함.
-urls.py: 현재 Django project의 URL 선언을 저장. Django로 작성된 사이트의 목차라고도 할 수 있음. Settings.py 안에 있는 ROOT_URLCONF에 settings/url.py 에 하겠다고 선언해두었기 때문.
-asgi.py: 현재 프로젝트를 지원하기 위한 ASGI 호환 웹 서버의 진입점 (엔트리 포인트)
-wsgi.py: 현재 프로젝트를 서비스 하기 위한 WSGI 호환 웹 서버의 진입점.
from django.http import HttpResponse #어디 sys에 있겠지...?
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
라는 코드를 넣어주면서 index라는 페이지에 접근하면 우리는 위와 같은 문구가 표출 된 것을 보게 될 수있다. 또한 뷰를 호출하기 위해서는 이와 연결된 URL이 있어야 한다.
6.URL 연결하기: ### 앱 경로에 url 생성하기
뷰를 호출하려면 ← 이와 연결된 URL이 있어야 함 ← 이를 위해 URLconf가 사용됨 ← polls 디렉토리에서 URLconf를 생성하려면 urls.py 파일 생성해야함 (vim urls.py)
즉, view에 맞는 각각의 url이 있어야하고, 그 url은 polls/urls.py 에서 만든다!
from django.urls import path # 이것도 어디 sys에 django.http랑 같이 있겠지...?
from . import views # 같은 디렉토리에 있는 views.py 파일을 불러옴.
urlpatterns = [
path('', views.index, name='index'), # view.py 안에 내가 만들어둔 index라는 함수를 데려왔네
]
또한 mysite에서 polls.urls.py를 include()하여 polls.urls내부에 있는 index뷰가 URLconf에 연결 되도록 한다.
##mysite/urls.py 안에 아래와 같은 코드를 삽입
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')), # mysite.urls.py에다 polls.urls.py를 include
path('admin/', admin.site.urls),
]
서버에서 확인해보기: python manage.py runserver # 서버가 구동되면서 아래와 같은 화면이 뜨면 성공이다.
데이터베이스 생성하기: migrate 명령어를 통해 settings.py 내부에 있는 INSTALLED.APPS를 보고 필요한 데이터 베이스를 생성하거나, 수정사항을 저장하는 역할을 한다. 즉, 이 명령을 실행한 후라면, 필요한 데이터 베이스의 기본 구조가 만들어졌다고 이해하면 된다.
./manage.py migrate
import datetime
from django.db import models
from django.utils import timezone
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question_text
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
python manage.py makemigrations polls
성공 했다고 뜨면 다음에는 migrate 명령어를 통해 데이터베이스에 모델과 관련된 테이블을 생성시킨다.
python manage.py migrate