conda create -n django_wecode python=3.8
(항상 파이썬 버전을 같이 생성)
conda activate django_wecode
django-admin startproject test01
만약 생성부터 다른 이름으로 생성하고 싶다면, 디렉토리를 생성한 후(ex, mkdir django_project)
안에 django-admin startproject test01 . => .이 중요함(현재 디렉토리 안에 프로젝트를 생성하겠다는 의미)
.(test01)
├── manage.py
└── test01
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.py
장고에서는 프로젝트를 생성할 때 안에 동일한 네임의 디렉토리를 생성해주고 있음,
꼭 바깥의 디렉토리와 안의 디렉토리 명이 같을 이유는 없으며 내부의 디렉토리가 더 중요
manage.py
__init__
.py
asgi.py
wsgi.py
웹서버게이트웨이, 웹서버를 만들어주는 기능을 함
둘 다 장고라서 있는 것이 아닌 파이썬에서 통신에 관한 서비스를 만들고 싶을 때는 두가지 인터페이스를 가지고 와서 진행을 하고 있음. 다른 라이브러리들에도 둘다 가지고 있음
(현재 단계에서는 위의 두 가지파일에서 구현을 하지는 않으며, 웹 프레임워크에 있어야만 하는 파일들이라는 것을 인지)
동기작업 : 통신으로 치면 프로세스가 전달되고 물려있으면 다른 작업을 할 수 없음
비동기작업 : 동기와 달리 채팅처럼 서로 주고 받는 것.(대표적으로 채팅 서비스)
urls.py
settings.py
설정 정보, 도구들을 가지고 있는 중요한 디렉토리를 의미함
실행 기준은 최상위 디렉토리 기준(manage.py가 루트 디렉토리를 의미함)
웹서버의 요청(request)를 받아 url 파싱 후 로직을 담당하는 View, 데이터베이스를 담당하는 Model을 거쳐 응답(response)를 전달
개발자는 위의 과정의 반대로 개발을 진행한다고 생각하면 됨
장고에서 앱을 시작하기 위해서는 다음과 같은 명령어를 실행
python manage.py startapp user(앱 이름)
실행을 하고 커맨드에 tree를 입력하면 user 디렉토리를 확인할 수 있음
├── user
│ ├── init.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── init.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── db.sqlite3
├── manage.py
└── test01
├── 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
migrations : 앱 내의 models.py의 데이터베이스의 수정 사항이 순서대로 쌓이는 것
models.py
데이터베이스와의 동기화를 담당하는 파일로, 앱 생성 시 가장 먼저 작성하며, 가장 많은 고민이 필요한 파일
생성, 수정 시에는 showmigrations -> makemigrations -> migrate 3단계를 진행
tests.py
views.py
urls.py
메인 url 파일에서 앱의 url로 include 해주면 view 파일을 통해 또 다른 동작을 실행
메인 url 파일에서 모든 엔드포인트를 구현해도 무방하나, 따로 만드는 이유는 각 앱의 url 경로가 복잡해질 수도 있기 때문에 따로 생성
필수 사항
1. app을 생성했을 때에는 settings의 installed_apps에 앱을 추가
2. app의 models의 생성, 수정이 되었을 때에는 makemigrations와 migrate를 필수로 진행