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의 주요 특징과 장점
- 빠른 개발: 프로젝트 시작부터 배포까지 필요한 도구와 기능이 기본 제공됨.
- 확장성: 앱 구조로 개발되며, 필요에 따라 손쉽게 기능 추가 가능.
- 보안: 사용자 인증, SQL Injection 방지 등 보안 기능이 기본 내장.
- 유연성: 작은 블로그부터 대규모 웹 애플리케이션까지 개발 가능.
- 풍부한 커뮤니티: Django 커뮤니티에서 제공하는 확장 패키지와 플러그인이 많음.
1.3 Django 설치 및 환경 설정
1.3.1 가상환경 생성
콘다 또는
venv
로 가상환경 생성:1 2
python -m venv myenv
가상환경 활성화:
Windows:
1 2
myenv\Scripts\activate
macOS/Linux:
1 2
source myenv/bin/activate
1.3.2 Django 설치
Django 설치:
1 2
pip install django
설치 확인:
1 2
python -m django --version
1.4 기본 프로젝트 생성
1.4.1 Django 프로젝트 생성
프로젝트 생성 명령어:
1 2
django-admin startproject myproject
프로젝트 폴더 구조:
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 2
python manage.py runserver
브라우저에서 확인:http://127.0.0.1:8000 Django 환영 페이지가 나타납니다.
2. Django 프로젝트 구조 이해
2.1 Django 프로젝트 구조 개요
Django 프로젝트를 생성하면 기본적인 파일과 폴더 구조가 자동으로 생성됩니다. 각 파일과 폴더는 특정 역할을 수행하며, 이를 이해하는 것이 Django 개발의 첫걸음입니다.
2.2 주요 파일과 폴더의 역할
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 # 관리자 계정 생성
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', ]
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), ]
wsgi.py
- WSGI(Web Server Gateway Interface) 설정 파일.
- Django 프로젝트를 WSGI 호환 웹 서버에 배포할 때 사용.
asgi.py
- ASGI(Asynchronous Server Gateway Interface) 설정 파일.
- 비동기 처리를 지원하는 서버에서 사용.
__init__.py
- 이 디렉토리를 파이썬 패키지로 인식하도록 설정.
2.3 프로젝트 실행 확인
실행 명령어:
1 2
python manage.py runserver
URL 확인: 브라우저에서 http://127.0.0.1:8000에 접속하여 Django 기본 화면 확인.
2.4 프로젝트 설정 변경하기
- 언어와 시간대 변경
settings.py
에서LANGUAGE_CODE
와TIME_ZONE
수정:1 2 3
LANGUAGE_CODE = 'ko-kr' TIME_ZONE = 'Asia/Seoul'
- 개발용 환경에서 디버그 활성화
DEBUG
설정:1 2
DEBUG = True
3. Django 앱 만들기
3.1 Django 앱의 개념
- Django 앱(App)은 특정 기능을 가진 모듈로, 하나의 Django 프로젝트는 여러 앱으로 구성됩니다.
- 앱은 독립적으로 개발되고 재사용 가능하도록 설계됩니다.
- 예: 블로그, 사용자 인증, 댓글 등은 각각 하나의 앱이 될 수 있음.
3.2 앱 생성 및 등록
- 앱 생성
앱 생성 명령어:
1 2
python manage.py startapp appname
예를 들어, “blog”라는 이름의 앱을 생성:
1 2
python manage.py startapp blog
- 앱 구조
생성된 앱 폴더 구조:
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/
: 데이터베이스 마이그레이션 파일.
- 앱 등록
생성한 앱을 프로젝트에 등록하려면
settings.py
의INSTALLED_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 2
python manage.py runserver
앱 동작 확인:
- 아직 구체적인 URL이나 뷰(View)가 없으므로, 다음 단계에서 URL과 뷰를 연결해 확인합니다.
This post is licensed under CC BY 4.0 by the author.