클라이언트에서 무엇을 요청하고, Django 서버에서의 파일구조가 어떻게 구성되어 있는지, 파일마다 어떤 역할을 하여 데이터가 어떤 구조로 들어오는지를 이해하는 게 중요함. 각 과정마다 운용되는 프로시저가 무엇을 의미하는지 이해해야 함. manage.py 의 argument에 따라 각각 어떤 진행을 만들 수 있는지 이해해야 함. HTML이 어떻게 실행되는지? 객체가 DB로 어떻게 이어지는지? HTML table 문제 작성하는 문제 출제.
파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크로, 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소
웹 서버에 요청 이후 장고 urlresolver는 웹페이지의 주소를 가져와 무엇을 할지 확인한다. urlresolver는 패턴 목록을 가져와 URL과 맞는지 대조하고, 장고는 해당 요청을 관련한 함수(view)에 넘긴다.
view 함수에서 대부분의 일이 처리된다.
만약 사용자가 데이터를 바꿔달라는 수정 요청을 한다면, view 함수는 수정할 수 있는 권한이 있는지 확인 후 수정해 다시 response를 보낸다.
웹 렌더링은 HTML을 생성시키는 과정이다.
현재 디렉토리에 장고를 설치하라고 스크립트에 알려줌
django-admin startproject mysite .
이후 구성된 디렉토리
djangoenv
ㄴmanage.py // 사이트 관리를 도움
ㄴmysite
ㄴsettings.py // 웹사이트 설정
ㄴurls.py // urlresolver가 사용하는 패턴 목록 포함
ㄴwsgi.py
ㄴ__init__.py
데이터베이스 설정
settings.py에서 DATABASES 정의
DATABASES = {
'default' : {
'ENGINE' : 'django.db.backends.sqlite3',
'NAME' : os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
python manage.py migrate
웹서버 시작
python manage.py runserver
장고 안의 모델은 객체의 특별한 종류다
모델을 저장하면 그 내용이 데이터베이스에 저장된다.
어플리케이션 만들기
python manage.py startapp blog
실행 후 blog 어플리케이션이 새로 생겨 다음과 같은 디렉토리가 생김
djangoenv
ㄴmanage.py
ㄴmysite
ㄴsettings.py
ㄴurls.py
ㄴwsgi.py
ㄴ__init__.py
ㄴblog
ㄴmigrations
ㄴ__init__.py
ㄴ__init__.py
ㄴadmin.py
ㄴmodels.py
ㄴtests.py
ㄴviews.py
mysite/settings.py 파일 안에서 INSTATLLED_APPS에서 'blog'를 추가함
INSTALLED_APPS = [
...
'blog',
]
모델 객체는 blog/models.py에 선언하여 생성
class Post(models.Motel) :
...
데이터베이스에 우리의 새 모델 (Post)를 추가해줘야 함
장고 모델에 변화가 생겼음을 DB가 알아야 함
python manage.py makemigrations blog
python manage.py migrate blog
makemigrations : 변경 사항이 생겼을 때, 이를 감지하고 기록함
migrate : 이렇게 기록된 파일을 읽어 변경사항을 데이터베이스에 저장함
/admin에서 로그인 가능한 superuser 생성
python manage.py createsuperuser
배포 후 PythonAnywhere에서 git clone 작업을 통해 가져옴
PythonAnywhere에서도 가상환경을 생성한다. (bash에서 생성 가능)
후에 GUI로 프로젝트에서 사용할 가상환경 설정을 해준다.
컴퓨터와 서버는 다른 데이터베이스를 사용할 수 있다.
WSGI 프로토콜 : PythonAnywhere 같이 파이썬을 이용한 웹사이트를 서비스하기 위한 표준
WSGI 파일에 PythonAnywhere의 경로나 CSS를 다루기 위한 핸들러를 가져오기도 함.
mysite/urls.py에서 urlpatterns를 관리한다.
URL을 view에 매칭한다.
mysite/urls.py를 깨끗하게 유지하려면 mysite/urls.py에서 blog.urls를 이용하도록 하고 blog/urls.py 파일에 urlpatterns를 관리한다.
urls.py는 views 파일에 정의된 뷰를 가져온다.
뷰에서는 요청을 넘겨받아 render 메서드를 호출한다.
render 함수를 통해 html 파일을 보여준다.
djangoenv
ㄴblog
ㄴmigrations
ㄴtemplates
ㄴblog
ㄴpost_list.html
꼭 html 파일이 blog/templates/blog/ 경로에 위치해야 함