먼저 장고를 처음할때는 초기 설정에 주의를 기울여야 합니다.
Django project를 구성하는 코드를 자동 생성해야 하는데, 이ㅣ 과정에서 데이터베이스 설정, Django를 위한 옵션들, application을 위한 설정들과 같은 Django 인스턴스를 구성하는 수많은 설정들이 생성되기 때문입니다.
먼저 Django를 install 한뒤 project를 만들어보겠습니다.
$ django-admin startproject <디렉토리명>
터미널에 위에 보이는 커맨드를 입력시 Website라는 디렉토리가 생성됩니다.
디렉토리명은 Python 또는 Django에서 사용중인 이름은 피해야 합니다. ``django``(Django그 자체와 충돌)나, ``test``(python 의 패키지 이름중 하나) 같은 이름은 피해야 합니다.
만약 이 커맨드가 동작하지않는다면, [django-admin실행문제] 를 보면서 해결하시기 바랍니다.
Django에서는 코드가 어디에서 서비스 되어야 할까?
Djang는 python 코드가 웹서버의 DocumentRoot에 존재하는것은 좋은생각이 아니다. 웹을 통해서 외부의 사람들이 python 코드를 직접 열어볼 수 있는 위험이 있어 보안에 별로 좋지않다.
작성한 코드는 /home/Website
와 같은 DocumentRoot의 바깥에 두는것을 권장합니다.
커맨드 입력후 Website 디렉토리가 만들어졌는지, 그 디렉토리안에 어떠한 것이 있는지 확인해보겠습니다.
Website/
manage.py
Website/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
$ cd Website
Website디렉토리 에는 manage.py와 또다른 Website디렉토리가 존재하고 이 Website 디렉토리 안에는 많은 파일이 존재합니다. 이제 해당파일의 기능들을 한번씩 살펴보겠습니다.
외부 Website / root 디렉토리
외부 Website / root 디렉토리 는 프로젝트의 컨테이너 입니다. django는 해당 디렉토리명은 중요하지않아 다른이름으로 바꾸어도 됩니다.
Website/__init__.py
__init__.py
가 존재하지않으면 해당디렉토리를 import 하는건 불가능하다.Django
django는 사용할 루트 URLconf모듈을 결정합니다.
이는 일반적으로는 ROOT_URLCONF 설정값이지만, 들어오는 HttpRequest 객체에 urlconf 속성(미들웨어로 설정) 이 있는 경우 ROOT_URLCONF 설정 대신 해당 값이 사용된다.django는 해당 python 모듈을 load하고 변수 urlpatterns를 찾습니다.
django.urls.path() 및 / 또는 django.urls.re_path() 인스턴스의 순서여야 합니다.
응용 프로그램 객체
WSGI와 마찬가지로 ASGI는 application 서버가 코드와 통신하는 데 사용할 수 있는 application을 제공합니다.
일반적으로 서버에 access 할 수 있는 python 모듈에서 application이라는 객체로 제공된다.startproject 커맨드는 호출 가능한 응용프로그램이 포함된
<project_name> /asgi.py
파일을 생성한다.