파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크(web application framework) 입니다.
웹사이트를 구축 할 때, 비슷한 유형의 요소들이 항상 필요합니다. 오래전에 어떤 웹 개발자들이 웹 사이트를 개발할 때 서로 비슷한 문제들에 직면한다는 것을 깨닫고 프레임워크를 만들었답니다.
- 사용자 인증
- 회원가입
- 로그인
- 로그아웃- 관리자
- 패널
- 폼
- 파일 업로드
편지(request 요청)가 도책했는지 확인해주는 메일박스(port 포트)가 있다고 상상해보세요.
웹 서버는 받은 편지를 읽고 웹 페이지와 함께 답장을 준답니다. 그런데 무언가를 주고 싶을 때는 그안에 내용이 있어야 하죠. 장고는 그 특정 콘텐츠를 만들 수 있는 역할을 합니다.
- 웹서버의 요청이오면 장고 urlresolver에서 URL(Uniform Resource Locator)와 패턴 목록이 맞는지 가져와 처음부터 하나씩 대조합니다.
- view에서 요청 변경 권한이 있는지 확인후, 작업에 대한 설명을 수정 합니다.
- view는 답장을 생성하며, 장고는 그 답장을 그 사용자의 웹 브라우저에 보내주는 역할을 합니다.

pip가 최신 버전인지 확인합니다.
(서버이름) ~$ python3 -m pip install --upgrade pip
장고 설치
(서버이름) ~$ pip install django~=2.0.0
Collecting Django~=2.0.6
Downloading Django-2.0.6-py3-none-any.whl (7.1MB)
Installing collected packages: Django
Successfully installed Django-2.0.6
장고 버젼 확인
~$ python -m django --version
장고 프로젝트를 설정하는 일부 코드(데이터베이스 구성, 장고관련 옵션 및 애플리케이션 관련 설정을 포함하여 django 인스턴스에 대한 설정 모음)를 자동으로 생성해주는 과정
명령 줄에서 cd코드를 저장할 디렉토리로 이동 한 후 다음 명령을 실행합니다.
$ django-admin startproject [파일명(ex)mysite]
mysite startproject 생성
$ django-admin startproject mysite
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
외부 mysite/루트 디렉터리는 프로젝트 컨테이너입니다. 원하는이름으로 변경가능합니다.mange.py이 Django 프로젝트와 다양한 방식으로 상호 작용을 합니다.내부 mysite/디렉토리가 python의 실제 패키지mysite/__init__.py이 디렉토리가 python 패키지로 간주되어야 함을 python에 알리는 빈 파일mysite/settings.py프로젝트에 대한 설정mysite/urls.py프로젝트에 대한 URL 선언mysite/asgi.pyASGI 호환 웹 서버의 진입 점mysite/wsgi.pyWSFI 호환 웹 서버의 진입 점
$ python manage.py runserver
manage.pyd와 같은 디렉토리에 있는지 확인하고 진행합니다.
$ pythono manage.py startapp [app 이름]
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
'[app 이름].apps.PollsConfig'
INSTALLED_APPS = [
'[app 이름].apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
Django가 앱이 포함됐다는 사실을 알게 되었습니다.
> 앱이 포함됬다는걸 django에게 알려주는 환경설정을 안해주면 이러한 오류를 뱉어낸다. 나는 products 라는 앱이 연결되있다고 설정해주었다. 'products.apps.PollsConfig'django를 설치하면 기본적으로 SQLite를 설치하도록 구성되어있다.
mySQL를 사용하려면 환경설정 세팅을 변경해주어야된다.
create database [데이터베이스 이름] character set utf8mb4 collate utf8mb4_general_ci;
mysql을 실행시키고 데이터 show databases; 로 확인하면 데이터베이스가 존재하는 걸 확인후
python makemigrations [apps 이름]
django에게 모델을 일부 변경했으며 변경 사항이 마이그레이션으로 저장되기를 원한다고 말하는 것
python manage.py migrate
적용되지 않은 모든 마이그레이션을 가지고와 데이터베이스를 실행한다.
python manage.py shell
shell에서 table에 데이터를 추가해줍니다!!