Django 프로젝트와 앱

Ryu Honggyu·2024년 8월 9일

Django

목록 보기
2/19
post-thumbnail

Django 프로젝트

하나의 Django 프로젝트 = 하나의 서비스 = 하나의 웹사이트

Django 개발환경 구성

  • Django 프로젝트를 시작하기 위한 과정이다.
단계설명
파이썬 설치링크를 통해 파이썬을 설치함.
가상환경 설정 (venv)python -m venv myenv 명령어로 가상환경을 설정함.
가상환경 활성화source myenv/bin/activate (Linux/Mac) 또는 venv\Scripts\activate (Windows) 명령어로 가상환경을 활성화함.
Django 라이브러리 설치pip install django==4.2 명령어로 Django 라이브러리를 설치함. LTS 버전은 오랜 기간 지원됨.
requirements.txt 에 프리즈pip freeze > requirements.txt 명령어로 현재 가상환경의 모든 패키지 의존성을 requirements.txt 파일에 저장함.
requirements.txt 에서 불러오기pip install -r requirements.txt 명령어로 requirements.txt 파일에 명시된 모든 패키지를 설치함.
의존성 패키지 설치Django를 보조하는 다른 패키지들도 모두 설치됨.
  • LTS는 Long-Term Support, 장기간 지원되는 버전을 의미함.
  • 따라서 오랫동안 안정적인 환경을 유지할 수 있음.

Django 프로젝트 개시

프로젝트 생성

  • <생성 디렉토리> 에 <프로젝트 이름> 으로 새 Django 프로젝트 생성
    django-admin startproject <프로젝트 이름> <생성 디렉토리>
  • 현재 디렉토리에 프로젝트 생성
    django-admin startproject <프로젝트 이름>

서버 실행

  • 해당 프로젝트를 선택
    cd <프로젝트 이름>
  • 개발 서버 실행
    python manage.py runserver

Django 앱

앱 = Django 프로젝트에서 쓸 수 있는 기능집합체. 각각 기능의 단위 모듈.

앱 사용 개시

앱 생성

  • 앱 생성 코드
    python manage.py startapp <앱 이름>

앱 등록

  • settings.py 파일 확인.
  • INSTALLED_APPS 에 <앱 이름> 추가.
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        '<앱 이름>',
    ]
    

Django 프로젝트 구조

  • 프로젝트는 기본적으로 다음과 같은 디렉토리 구조를 띔.
<프로젝트 이름>/
    <프로젝트 이름>/
        __init__.py
        asgi.py
        settings.py
        urls.py
        wsgi.py
    manage.py
    <앱 이름>/
        __init__.py
        admin.py
        apps.py
        models.py
        tests.py
        views.py
파일설명
__init__.py해당 디렉토리를 Python 패키지로 인식하게 함.
asgi.pyDjango의 ASGI 설정 파일. 비동기 서버와 통신할 때 사용됨.
settings.py데이터베이스, 앱 설정 등 프로젝트의 설정을 관리함.
urls.pyURL과 뷰를 연결하는 라우팅 설정 파일로, 어떤 요청을 처리할지 결정함.
wsgi.pyDjango의 WSGI 설정 파일. 서버 통신과 배포에 사용됨.
manage.pyDjango 유틸리티. 프로젝트와 상호작용하는 명령 도구.
admin.pyDjango 관리자 사이트에서 모델을 관리하기 위한 설정 파일.
apps.py앱의 설정 클래스가 포함된 파일. 앱의 메타데이터를 정의함.
models.py데이터베이스 모델을 정의하는 파일. 데이터베이스 테이블 구조를 결정.
tests.py유닛 테스트를 작성하는 파일. 앱의 기능을 검증하기 위한 테스트 코드를 포함.
views.py웹 요청을 처리하고 응답을 반환하는 뷰 함수/클래스를 정의하는 파일.

Gateway Interface

  • CGI: Common (흔한) Gateway (컴퓨터 네트워크에서 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 것) Interface (인터페이스).
    • 웹 서버가 요청을 받을 때마다 새 프로세스를 만들어 외부 프로그램을 실행함.
    • 속도가 느리고 리소스를 많이 사용하게 되는 단점이 있음.
    • 이러한 이유로 Django 는 CGI 대신 개선된 GI 인 ASGI, WSGI 를 사용함.
  • WSGI: Web Server Gateway Interface. CGI의 단점을 개선한 동기 방식의 표준. 파이썬 웹 애플리케이션들은 웬만해선 WSGI를 통해 서버와 통신.
    Django 역시 파이썬 기반 프레임워크인 만큼 WSGI 를 지원함.
  • ASGI: Asynchronous Server Gateway Interface. 비동기 방식으로 동작하는 웹 애플리케이션을 지원하는 표준. 실시간 데이터 처리나 웹 소켓과 같은 최신 웹 기능을 효율적으로 처리함.
    Django 3.0 부터 지원을 시작했었음.

기타 관련 용어

  • 메타데이터: 일반적으로 데이터에 관련된, 구조화된 데이터
profile
알고리즘 & 웹 & CS & AI

0개의 댓글