Python Django startproject

박상영·2020년 6월 5일
0
post-thumbnail

먼저 장고를 처음할때는 초기 설정에 주의를 기울여야 합니다.
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는 해당 디렉토리명은 중요하지않아 다른이름으로 바꾸어도 됩니다.

  • manage.py
    Django프로젝트와 다양한 방법으로 상호작용하는 커맨드라인의 유틸리티 입니다. "자세한정보"
  • Website/
    디렉토리 내부에는 프로젝트를 위한 실제 Python 패키지들이 저장됩니다. 디렉토리 내의 이름을 이용 하여 (Website.urls와 같은식) 프로젝트의 어디서나 python 패키지들을 import 할수있습니다.
  • Website/__init__.py
    python 으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일이다. 하지만 __init__.py가 존재하지않으면 해당디렉토리를 import 하는건 불가능하다.
  • Website/settings.py
    현재 Django 프로젝트의 환경 및 구성을 저장합니다.
    Django설정을 모듈변수로 표현한 보통의 python 모듈입니다. 기본적으로 SQLite를 사용하도록 구성되어있다.
    settings.py
  • Website/urls.py
    현재 Django 프로젝트의 URL 선언을 저장합니다.
    Django로 작성된 "목차"라고 할수있습니다.
    urls.py 을 사용하면 프레임워크 제한없이 원하는 URL을 디자인 할수있습니다.
    app의 url을 디자인하기 위해 비공식적으로 URLconf(URL구성)라는 python 모듈을 만듭니다.
    이 모듈은 순수 python 코드 이며 URL path 표현식 과
    python 함수 간의 mapping 입니다.
  1. mapping은 필요한만큼 짧거나 길 수 있습니다.
  2. 다른 매핑을 참조 할 수 있습니다.
  3. pure python 코드이기 때문에 동적으로 구성 할 수 있습니다.

Django

django는 사용할 루트 URLconf모듈을 결정합니다.
이는 일반적으로는 ROOT_URLCONF 설정값이지만, 들어오는 HttpRequest 객체에 urlconf 속성(미들웨어로 설정) 이 있는 경우 ROOT_URLCONF 설정 대신 해당 값이 사용된다.

django는 해당 python 모듈을 load하고 변수 urlpatterns를 찾습니다.

django.urls.path() 및 / 또는
django.urls.re_path()  인스턴스의 순서여야 합니다.
  • Website/asgi.py
    ASGi 호환 웹 서버가 프젝트를 수행 할 수있는 진입점 입니다.
  1. Django의 startproject 관리 명령은 rlqhs ASGI 구성을 설정하여 프로젝트에 필요한대로 조정할 수 있다.
  2. ASGI 호환 응용 프로그램 서버를 사용하도록 지시 할 수 있다.

    응용 프로그램 객체

    WSGI와 마찬가지로 ASGI는 application 서버가 코드와 통신하는 데 사용할 수 있는 application을 제공합니다.
    일반적으로 서버에 access 할 수 있는 python 모듈에서 application이라는 객체로 제공된다.

    startproject 커맨드는 호출 가능한 응용프로그램이 포함된 <project_name> /asgi.py 파일을 생성한다.

  • Website/wsgi.py
    현재 프로젝트를 서비스하기 위한 WSGI 호환 웹 서버의 진입점 입니다.
  1. Django의 startproject 관리 명령은 최소한의 기본 WSGI 구성을 설정하여 프로제긑에 필요한대로 조정하고 WSGI 호환 응용 프로그램 서버를 사용하도록 지시할수있다.
  2. Django에는 다음 WSGI 서버에 대한 시작 설명서가 포함되어 있습니다.
    장고를 Gunicorn과 함께 사용 하는 방법
    uWSGI와 함께 Django 를 사용하는 방법
    Django를 Apache 및 mod_wsgi와 함게 사용하는 방법
    Apache에서 Django의 사용자 데이터베이스에 대한 인증
profile
backend

0개의 댓글