1.1 django project

  1. 프로젝트 생성

    가상 환경이 활성화 된 현재 폴더 안에 프로젝트를 생성. 명령어 마지막 `.` 주의.

    project 를 생성할 때, Python 이나 Django 에서 사용중인 이름은 피해야 한다.

    `-` 도 사용할 수 없다.

    (ex. django, test, class, django-test...)

    $ django-admin startproject intro .
  2. 서버 실행

    $ python manage.py runserver
  3. gitignore 설정

    $ touch .gitignore
  4. TIME_ZONE, LANGUAGE_CODE 설정

    • `settings.py`

      LANGUAGE_CODE = 'ko-kr' TIME_ZONE = 'Asia/Seoul'
  5. 서버 재실행 및 한글화 확인

**상황에 따른 설정**

공식문서에 따르면, 단일 프로젝트에서는 `django-admin` 보다는 `manage.py`를 사용하는 것이 편할 것이라고 이야기한다. 기본적으로 후자는 프로젝트 경로를 시스템 path에 추가하며, settings.py 설정된 내용을 `DJANGO_SETTINGS_MODULE` 환경변수에 넣어서 활용한다.

다만, 나중에 프로젝트 및 app 단위별로 setting이 나뉘게 된다면 이 경우에는 `django-admin` 명령어에 CLI 옵션 `--settings` 를 통해 지정하여 실행할 수 있는 장점이 있다.

  1. 프로젝트 구조

django-intro/ manage.py intro/ __init__.py settings.py urls.py wsgi.py db.sqlite3

  • `django-intro/`: 디렉토리 바깥의 디렉토리는 단순히 프로젝트를 담는 공간. 이 이름은 Django 와 아무 상관이 없으니, 원하는 이름으로 변경이 가능.

  • `manage.py`: Django 프로젝트와 다양한 방법으로 상호작용 하는 커맨드라인의 유틸리티.

  • `django_intro/`: 디렉토리 내부에는 project 를 위한 실제 Python 패키지들이 저장됨. 이 디렉토리 내의 이름을 이용하여, (`django_intro.urls` 와 같은 식으로) project 어디서나 Python 패키지들을 import 할 수 있다.

  • `__init__.py`: Python 으로 하여금 이 디렉토리를 패키지 처럼 다루라고 알려주는 용도의 단순한 빈 파일.

  • `settings.py`: 현재 Django project 의 모든 환경/구성을 저장.

  • `urls.py`: 현재 Django project 의 URL 선언을 저장. Django 로 작성된 사이트의 "목차". 사이트의 url 과 views 의 연결을 지정. 모든 url 매핑 코드가 포함될 수 있지만, 특정한 어플리케이션에 매핑의 일부를 할당해주는 것이 일반적.

  • `wsgi.py`: 현재 project 를 서비스 하기 위한 WSGI 호환 웹 서버의 진입점.

    • `WSGI(Web server gateway interface)`: 파이썬 웹 프레임워크에서 사용하는 웹서버 규칙

 

1.2 django application

  • 실제로 특정한 역할을 해주는 친구가 바로 application

  • 프로젝트는 이러한 어플리케이션의 집합이고, 실제 요청을 처리하고 페이지를 보여주고 하는 것들은 이 어플리케이션의 역할

  • 하나의 프로젝트는 여러 개의 어플리케이션을 가질 수 있다.

    • 어플리케이션은 하나의 역할 및 기능 단위로 쪼개는 것이 일반적이나 작은 규모의 서비스에서는 잘 나누지 않는다. 반드시 이렇게 나눠야 한다는 기준 또한 없다.

  • 각각의 어플리케이션은 MTV 패턴으로 구성되어 있다.

  1. Application 만들기

    $ python manage.py startapp home
  2. Application 구조

    home/ __init__.py admin.py apps.py models.py tests.py views.py migrations/ __init__.py
    • `admin.py` : 관리자용 페이지 커스터마이징 장소.

    • `apps.py` : 앱의 정보가 있는 곳. 우선 우리는 수정할 일이 없다.

    • `models.py` : 앱에서 사용하는 Model 를 정의하는 곳.

    • `tests.py` : 테스트 코드를 작성하는 곳.

    • `views.py` : view 들이 정의 되는 곳. 사용자에게 어떤 데이터를 보여줄지 구현하는 곳.

  3. Application 등록

    • 방금 생성한 application 을 사용하려면 프로젝트에게 앱을 만들었다고 알려주어야 사용 가능하다.

    • `home > apps.py > class HomeConfig()` 구조 이기 때문에 `home.apps.HomeConfig` 로 작성한다.

    •  

      `settings.py`

       

    INSTALLED_APPS = [
       #  Local Apps
       'home.apps.HomeConfig',
  
       #  Django Apps
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]
    # 항상 `,`(쉼표) 를 작성해주고 마치는 습관을 가진다.
    # 혹은 그냥 'home' 이라고 작성할 수 있다. 다만, 후반부 자세한 설정에 한계가 있기 때문에 위처럼 작성한다.

 

'Python2 > Django(장고)' 카테고리의 다른 글

1  (0) 2019.06.12

1

+ Recent posts