Django 웹 어플리케이션은 전형적으로 아래와 같이 분류된 파일들에 대해 일련의 단계를 수행하는 코드로 구성되어 있습니다

Django 프로젝트 구조

 

기본 디렉토리 및 파일 구조

최초 Django 프로젝트를 생성할 때 repo 디렉토리 안에서 아래와 같이 명령하면 conf 디렉토리가 만들어진다.

django-admin.py startproject conf .

위 명령어로 실행했을 때 결과는 다음과 같다.

프로젝트_이름/
    repo/
        conf/
            __init__.py
            settings.py
            urls.py
            wsgi.py
        manage.py            
    venv/

 

 

PyCharm에서 프로젝트를 임포트할 때는 repo 디렉토리를 임포트하고 이를 기준으로 저장소에 소스 커밋한다.

 

 

 

기본 디렉토리 및 파일 설명

프로젝트 단위로 하위 디렉토리를 가진다.

  • repo: Django 애플리케이션 소스 코드 디렉토리 = 저장소 커밋 관리
  • venv: 가상환경 디렉토리

mkdir 명령어로 repo 디렉토리를 생성 후 디렉토리 안에서 startproject 옵션으로 프로젝트를 만든다.

일반적으로 conf 이름 대신에 프로젝트 이름을 사용하지만 실제로는 프로젝트의 설정 파일이 들어가므로 conf 이름으로 사용한다.

타 프로젝트와 구별하기 위해 최상위 디렉토리 이름을 프로젝트 이름으로 한다.

 

 

가상환경 설치

mkdir [프로젝트이름]
cd [프로젝트이름]

python3 -m venv [원하는 이름 (ex. venv)]

 

가상환경 실행

  • 가상환경 실행 후에는 콘솔 프롬프트에 (venv - 설정한 이름)이 표시된다.
  • 가상 환경을 시작하고 나면 python이라고만 해도 지정한 버전의 파이썬이 실행되기 때문에 python3 대신 python이라고 입력해도 된다.
source venv/bin/activate

(venv) C:\Users\Name\djangogirls>

venv 디렉토리는 종속성 분리의 원칙에 따라 프로젝트의 독립적인 가상환경을 제공한다.

파이썬 3.4 버전부터는 별도의 virtualenv 패키지 설치하지 않고 가상환경 디렉토리를 만들 수 있다.

 

 

 

 

 

Django 앱 구조

 

 

 

기본 디렉토리 및 파일 구조

앱 디렉토리 안에 기본 생성 파일은 다음과 같다.

bookmark/
    __init__.py
    admin.py
    apps.py
    migrations/
    models.py
    tests.py
    views.py

Django 버전 1.9부터 애플리케이션의 설정 클래스를 정의하는 apps.py 파일이 추가되었다.

애플리케이션의 등록은 다음과 같이 할 수 있다.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'bookmark.apps.BookmarkConfig',
]

단순히 bookmark 모듈 이름으로 등록할 수 있지만 bookmark.apps.BookmarkConfig 설정 클래스 이름으로 등록하는 것이 보다 정확한 방법이다.

 

 

 

공통 모듈 구조

Two Scoops of Django 책에서 소개하는 공통 모듈 구조이다. Django 개발자들끼리의 이름 규칙 약속이다.

bookmark/
    __init__.py
    admin.py
    apps.py
    migrations/
    models.py
    tests.py
    views.py
    urls.py
    forms.py
    behaviors.py
    constants.py
    decorators.py
    db/
    fields.py
    factories.py
    helpers.py
    managers.py
    signals.py
    viewmixins.py

추가로 넣을 수 있는 파일에 대한 설명은 다음과 같다.

  • urls.py: 앱의 URL 패턴 선언
  • forms.py: 입력 폼 선언
  • behaviors.py: 모델 믹스인 위치에 대한 옵션
  • constants.py: 앱에 쓰이는 상수 선언
  • decorators.py: 데코레이터
  • db/: 여러 프로젝트에서 통용되는 커스텀 모델이나 컴포넌트
  • fields.py: 폼 필드
  • factories.py: 테스트 데이터 팩토리 파일
  • helpers.py: 뷰와 모델 파일을 가볍게 하기 위해 유틸리티 함수 선언
  • managers.py: models.py가 너무 커질 경우 커스텀 모델 매니저가 위치
  • signals.py: 커스텀 시그널
  • viewmixins.py: 뷰 모듈과 패키지를 더 가볍게하기 위해 뷰 믹스인을 이 모듈로 이전

 

 

 

 

개발 서버 구동하기

python manage.py runserver

명령을 실행하면 개발 서버가 구동된다. 맨 아랫줄에는 'Quit the server with CTRL-BREAK'이라는 개발 서버 종료 방법도 안내되어 있다. 개발 서버를 종료하려면<Ctrl+C>를 누르란 뜻이다.

개발 서버가 구동된 상태를 유지하고 웹 브라우저를 이용하여 127.0.0.1:8000에 접속해 보자. 그러면 장고가 기본으로 만든 웹 사이트 화면을 볼 수 있다.

장고 기본 화면

로컬 아이피 주소로 다른 사람이 접속할 수 없는 이유

아직은 여러분이 만든 사이트에 다른 사람이 접속할 수 없다

왜 그럴까? 다른 사람이 여러분이 만든 사이트에 접속하려면 localhost나 127.0.0.1이라는 로컬 아이피 주소가 아닌 15.165.210.240과 같은 인터넷 세상 속의 아이피 주소 또는 pybo.kr과 같은 도메인이 필요하기 때문이다.

로컬 아이피 주소의 '로컬'은 지역이라는 뜻이며, 이는 곧 '내 PC'를 의미한다. 내 PC의 아이피 주소이므로 친구가 접속할 수 없다.

 

다음에 웹 호스팅 서비스를 이용해 간단하게 배포하는 것도 해볼 예정입니다!

 

 

 

 

 

 

참조

wikidocs.net/6609
https://wikidocs.net/72377
https://wayhome25.github.io/blog/tags/#django

반응형

'django' 카테고리의 다른 글

[Django] 클래스형 뷰 (CBV, Class-Based View)  (0) 2021.02.14
[Django] 템플릿(template) 언어  (0) 2021.02.06
[Django] 쿼리셋(QuerySet)  (0) 2021.02.05
[Djnago] HttpRequest와 HttpResponse API  (1) 2021.02.02
[Django] MTV패턴  (1) 2021.01.31

+ Recent posts