택시짱의 개발 노트

3장. 어떻게 장고 프로젝트를 구성할 것인가 본문

Django(장고)

3장. 어떻게 장고 프로젝트를 구성할 것인가

택시짱 2021. 9. 2. 16:47

3.1. 장고 3's의 기본 프로젝트 구성

django-admin startproject mysite
cd mysite
django-admin startapp my_app
기본 프로젝트 구조
mysite/
├── manage.py
├── my_app
│        ├── __init__.py
│      ├── admin.py
│      ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── mysite
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

3.2. 우리가 선호하는 프로젝트 구성

원서 업데이트 내용

<repository_root>/
├── <configuration_root>/
├── <django_project_root>/

repository_root

  • 프로젝트의 최상위 루트 django_projectrootconfiguration_root를 제외한 나머지 README.md, docs, manage.py, .gitignore, requirements.txt 파일 등등이 있고 그 프로젝트를 배포하는데 필요한 다른 중요한 내용이 위치한다.

configuration_root

  • settings모듈과 기본 URLConf(urls.py)가 저장되는 장소이다.
  • configuration_root 안의 파일은 django-admin.py start-project 명령으로 생성도니 파일의 일부이다

django_project_root

  • 장고 프로젝트 소스들이 위치하는 디렉터리.
  • django-admin.py startproject 명령어를 이용할 때 명령어를 저장소 루트 디렉토리 안에서 실행하면 생성된 장고 프로제젝트가 프로젝트 루트가 된다.

3.3. 예제 프로젝트 구성

원서 업데이트 내용

icecreamratings_project
├── config/
│   ├── settings/
│   ├── __init__.py
│   ├── asgi.py
│   ├── urls.py
│   └── wsgi.py
├── docs/
├── icecreamratings/
│   ├── media/  # Development only!
│   ├── products/
│   ├── profiles/
│   ├── ratings/
│   ├── static/
│   └── templates/
├── .gitignore
├── Makefile
├── README.md
├── manage.py
└── requirements.txt

저장소 루트의 파일과 디렉토리

  • .gitignore

    git이 처리하지 않을 파일과 디렉터리

  • config/

    프로젝트 전체 설정, urls.py, wsgi.py 모듈이 위치하는 디렉토리

  • Makefile

    간단한 배포 작업 내용과 매크로들을 포함한 파일이다

  • manage.py

    내용을 수정하면 안된다

  • README.md and docs/

    개발자를 위한 프로젝트 문서들

  • requirements.txt

    우리의 프로젝트에 필요한 python package의 리스트

  • incecramratings/

    프로젝트의

장고 프로젝트 파일과 디렉토리

  • media

    개발 용도로 이용되는 디렉토리. 사용자가 올리는 사진 드으이 미디어 파일이 올라가는 장소. 큰 프로젝트의 경우 사용자들이 올리는 미디어 파일들은 독립된 서버에서 호스팅 한다.

  • products/

    아이스크림 브랜드를 보여주고 관리하는 앱

  • profiles/

    이용자 프로필을 관리하고 보여주는 앱

  • ratings/

    이용자가 매긴 점수를 관리하는 앱

  • static/

    CSS, 자바스크립트, 이미지 등 사용자가 올리는 것 이외의 정적 파일들을 위치시키는 곳이다. 큰 프로젝트의 경우 독립된 서버에서 호스팅 한다.

  • templates/

    시스템 통합 템플릿 파일 저장 장소

3.4. virtualenv 설정

Don't Upload Environment Directories To Public Repos

  • virtualenv는 시스템에 설치된 python에 영향을 주지 않고 새로운 python 가상 환경을 만들 수 있게 도와준다. 이 가상 환경에서는 python 실행파일, 라이브러리 설치 장소 등이 제공되고 '가상 환경'답게 패키지를 설치해도 기존 시스템에 영향을 주지 않도록 설계 되어 있다.
  • virtualenv의 내용까지 버전 컨트롤 시스템 (git)에 넣어서 관리할 필요는 없다. 프로젝트에서 이용되는 패키지 정보는 requirements.txt 파일 안에 정의 되어 있기 때문에 requirements.txt 파일은 반드시 버전 컨트롤 시스템으로 관리 해야 한다.

현재 virtualenv에서 설치된 패키지 리스트 저장

$ pip freeze > requirements.txt

3.5. startproject 살펴보기

자료

3.6. 요약

  • 프로젝트 구성은 개발자 또는 개발자 그룹마다 서로 사뭇 다른 이용 모습을 보이는 부분이다. 작은 팀에서 최적으로 효과를 내던 구성이라도 분산된 자원을 공유하는 큰 팀에서는 잘 적용되지 않거나 그만큼 효과를 낼 수 없을지도 모른다.핵심은 어떤 구성을 택하더라도 반드시 명확하게 문서로 남겨야 한다는 것이다.
반응형
Comments