Post

Django 이해 및 앱 만들기

Django의 기본 개념과 앱 생성 방법

Django 이해 및 앱 만들기

1. Django 기초 이해

1.1 Django란 무엇인가?

Django는 Python 기반의 고수준 웹 프레임워크로, 신속한 개발과 깔끔한 설계를 목표로 합니다.

  • 주요 철학: “Don’t Repeat Yourself(DRY)”와 “Explicit is better than Implicit”.
  • 주요 특징:
    • 자동화된 Admin Interface.
    • 강력한 ORM(Object Relational Mapping).
    • 기본 제공 보안 기능(CSRF, XSS 방지 등).
    • 간편한 URL 라우팅 및 템플릿 엔진.

1.2 Django의 주요 특징과 장점

  1. 빠른 개발: 프로젝트 시작부터 배포까지 필요한 도구와 기능이 기본 제공됨.
  2. 확장성: 앱 구조로 개발되며, 필요에 따라 손쉽게 기능 추가 가능.
  3. 보안: 사용자 인증, SQL Injection 방지 등 보안 기능이 기본 내장.
  4. 유연성: 작은 블로그부터 대규모 웹 애플리케이션까지 개발 가능.
  5. 풍부한 커뮤니티: Django 커뮤니티에서 제공하는 확장 패키지와 플러그인이 많음.

1.3 Django 설치 및 환경 설정

1.3.1 가상환경 생성

  1. 콘다 또는 venv로 가상환경 생성:

    1
    2
    
     python -m venv myenv
        
    
  2. 가상환경 활성화:

    • Windows:

      1
      2
      
        myenv\Scripts\activate
              
      
    • macOS/Linux:

      1
      2
      
        source myenv/bin/activate
              
      

1.3.2 Django 설치

  1. Django 설치:

    1
    2
    
     pip install django
        
    
  2. 설치 확인:

    1
    2
    
     python -m django --version
        
    

1.4 기본 프로젝트 생성

1.4.1 Django 프로젝트 생성

  1. 프로젝트 생성 명령어:

    1
    2
    
     django-admin startproject myproject
        
    
  2. 프로젝트 폴더 구조:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
     myproject/
         manage.py
         myproject/
             __init__.py
             settings.py
             urls.py
             wsgi.py
             asgi.py
        
    

1.4.2 로컬 서버 실행

  1. 개발 서버 시작:

    1
    2
    
     python manage.py runserver
        
    
  2. 브라우저에서 확인:http://127.0.0.1:8000 Django 환영 페이지가 나타납니다.

2. Django 프로젝트 구조 이해

2.1 Django 프로젝트 구조 개요

Django 프로젝트를 생성하면 기본적인 파일과 폴더 구조가 자동으로 생성됩니다. 각 파일과 폴더는 특정 역할을 수행하며, 이를 이해하는 것이 Django 개발의 첫걸음입니다.

2.2 주요 파일과 폴더의 역할

  1. manage.py
    • 프로젝트와 앱을 관리하는 스크립트.
    • 주요 명령어:

      1
      2
      3
      4
      5
      6
      
        python manage.py runserver  # 개발 서버 실행
        python manage.py startapp appname  # 앱 생성
        python manage.py makemigrations  # 마이그레이션 파일 생성
        python manage.py migrate  # 데이터베이스에 반영
        python manage.py createsuperuser  # 관리자 계정 생성
              
      
  2. settings.py
    • Django 프로젝트의 설정 파일.
    • 주요 설정 항목:
      • INSTALLED_APPS: 프로젝트에서 사용할 앱 리스트.
      • DATABASES: 데이터베이스 설정.
      • TEMPLATES: 템플릿 엔진 설정.
      • STATIC_URL: 정적 파일 경로 설정.
      • ALLOWED_HOSTS: 허용된 호스트 이름 목록.
    • 예시:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      
        INSTALLED_APPS = [
            'django.contrib.admin',
            'django.contrib.auth',
            'django.contrib.contenttypes',
            'django.contrib.sessions',
            'django.contrib.messages',
            'django.contrib.staticfiles',
        ]
              
      
  3. urls.py
    • URL 패턴을 정의하는 파일.
    • 각 URL이 어떤 뷰(View)로 연결될지 매핑.
    • 기본 구조:

      1
      2
      3
      4
      5
      6
      7
      
        from django.contrib import admin
        from django.urls import path
              
        urlpatterns = [
            path('admin/', admin.site.urls),
        ]
              
      
  4. wsgi.py
    • WSGI(Web Server Gateway Interface) 설정 파일.
    • Django 프로젝트를 WSGI 호환 웹 서버에 배포할 때 사용.
  5. asgi.py
    • ASGI(Asynchronous Server Gateway Interface) 설정 파일.
    • 비동기 처리를 지원하는 서버에서 사용.
  6. __init__.py
    • 이 디렉토리를 파이썬 패키지로 인식하도록 설정.

2.3 프로젝트 실행 확인

  1. 실행 명령어:

    1
    2
    
     python manage.py runserver
        
    
  2. URL 확인: 브라우저에서 http://127.0.0.1:8000에 접속하여 Django 기본 화면 확인.

2.4 프로젝트 설정 변경하기

  1. 언어와 시간대 변경
    • settings.py에서 LANGUAGE_CODETIME_ZONE 수정:

      1
      2
      3
      
        LANGUAGE_CODE = 'ko-kr'
        TIME_ZONE = 'Asia/Seoul'
              
      
  2. 개발용 환경에서 디버그 활성화
    • DEBUG 설정:

      1
      2
      
        DEBUG = True
              
      

3. Django 앱 만들기

3.1 Django 앱의 개념

  • Django 앱(App)은 특정 기능을 가진 모듈로, 하나의 Django 프로젝트는 여러 앱으로 구성됩니다.
  • 앱은 독립적으로 개발되고 재사용 가능하도록 설계됩니다.
  • 예: 블로그, 사용자 인증, 댓글 등은 각각 하나의 앱이 될 수 있음.

3.2 앱 생성 및 등록

  1. 앱 생성
    • 앱 생성 명령어:

      1
      2
      
        python manage.py startapp appname
              
      
    • 예를 들어, “blog”라는 이름의 앱을 생성:

      1
      2
      
        python manage.py startapp blog
              
      
  2. 앱 구조
    • 생성된 앱 폴더 구조:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      
        blog/
            migrations/
                __init__.py
            __init__.py
            admin.py
            apps.py
            models.py
            tests.py
            views.py
              
      
    • 각 파일의 역할:

      • admin.py: 관리자 페이지 설정.
      • apps.py: 앱 설정 파일.
      • models.py: 데이터베이스 모델 정의.
      • views.py: 로직(Controller) 구현.
      • tests.py: 테스트 작성.
      • migrations/: 데이터베이스 마이그레이션 파일.
  3. 앱 등록
    • 생성한 앱을 프로젝트에 등록하려면 settings.pyINSTALLED_APPS에 추가:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      
        INSTALLED_APPS = [
            'django.contrib.admin',
            'django.contrib.auth',
            'django.contrib.contenttypes',
            'django.contrib.sessions',
            'django.contrib.messages',
            'django.contrib.staticfiles',
            'blog',  # 새로 추가된 앱
        ]
              
      

3.3 프로젝트와 앱의 관계

  • 프로젝트는 하나의 웹 애플리케이션의 큰 틀이며, 앱은 프로젝트의 구성 요소입니다.
  • 프로젝트와 앱은 독립적으로 관리될 수 있지만, 프로젝트의 urls.py를 통해 연결됩니다.

3.4 앱 실행 확인

  1. 개발 서버 실행:

    1
    2
    
     python manage.py runserver
        
    
  2. 앱 동작 확인:

    • 아직 구체적인 URL이나 뷰(View)가 없으므로, 다음 단계에서 URL과 뷰를 연결해 확인합니다.
This post is licensed under CC BY 4.0 by the author.