Django: 웹 개발의 핵심 이해하기
Django는 Python을 이용한 웹 개발 프레임워크로, 개발자가 데이터베이스 기반 웹사이트를 빠르고 효율적으로 개발할 수 있게 도와줍니다. Django의 핵심 구조는 MVC(Model-View-Controller) 패턴을 기반으로 합니다.
MVC 패턴
- Model: models.py를 정의하여 데이터베이스 구조를 생성합니다.
- View: templates를 이용하여 사용자에게 보여줄 화면을 결정합니다.
- Controller: views.py에서 데이터를 처리하고, 결과를 템플릿에 전달합니다.
Django의 주요 구성 요소
- models.py: 데이터베이스 테이블 구조를 정의합니다.
- admin.py: 관리자 페이지를 정의합니다.
- views.py: 애플리케이션의 비즈니스 로직을 구현합니다.
- templates: 사용자 인터페이스를 정의하는 HTML 파일을 저장합니다.
- settings.py: 프로젝트의 전반적인 설정을 담당합니다.
settings.py
Django 프로젝트의 설정을 담당하는 파일로, 데이터베이스, 템플릿, 정적 파일 등의 설정을 포함합니다.
- db 설정(mysql 기준)
1
2
3
4
5
6
7
8
9
10
| DATABASES = {
'default': {
'ENGINE' : 'django.db.backends.mysql',
'NAME' : 'DB0227',
'USER' : '<db_user>',
'PASSWORD' : '<db_passwd>',
'HOST' : 'localhost',
'PORT' : ''
}
}
|
- templates 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['',],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
|
- static 설정
1
2
| STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
|
- APP 등록
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',
<추가하기>,
]
|
- 시간 설정
1
2
3
| LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
|
models.py
데이터베이스 테이블 구조를 클래스 형태로 정의하는 파일로, Django는 ORM(Object Relational Mapping) 기법을 사용하여 클래스의 CRUD(Create, Read, Update, Delete) 연산이 데이터베이스에 자동으로 반영되도록 합니다.
urls.py
웹 애플리케이션의 URL 경로를 정의하는 파일로, 각 URL이 어떤 뷰 함수나 클래스에 연결될지를 결정합니다.
views.py
웹 애플리케이션의 비즈니스 로직을 구현하는 파일로, 사용자의 요청을 받아 처리하고, 처리 결과를 템플릿에 전달하여 사용자에게 보여줍니다.
templates
사용자에게 보여줄 HTML 파일을 저장하는 디렉토리입니다. 각 HTML 파일은 Django 템플릿 언어를 사용하여 동적인 웹 페이지를 생성합니다.
예시: Bookmark APP
Django를 이용하여 Bookmark 애플리케이션을 만드는 과정을 간략하게 설명합니다. 이 과정은 Django 프로젝트를 생성하고, 애플리케이션을 생성하여 설정하는 단계, 모델을 정의하고 데이터베이스에 반영하는 단계, 그리고 뷰와 템플릿을 정의하여 사용자 인터페이스를 구현하는 단계로 구성됩니다.
1
2
3
| django-admin.py startproject website
cd website
vi settings.py
|
1
2
3
| TEMPLATES = [
'DIRS' : [os.path.join(BASE_DIR,'templates'),]
]
|
1
2
| STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
|
1
| TIME_ZONE = 'Asia/Seoul'
|
1
2
| MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
|
1
| python manage.py migrate
|
1
| python manage.py createsuperuser
|
1
| python manage.py startapp bookmark
|
1
2
3
4
5
| vi settings.py
INSTALLED_APPS = [
'bookmark',
]
|
models.py와 admin.py는 세트다.
1
2
3
4
5
6
7
| from django.contrib import admin
from bookmark.models import Bookmark
class BookmarkAdmin(admin,ModelAdmin):
list_display = ('title','url')
admin.site.register(Bookmark,BookmarkAdmin)
|
BookmarkAdmin은 Bookmark 클래스가 admin 사이트에서 어떤 모습으로 보여줄지 정의하는 클래스다. title과 url만 보일 것이다.
1
2
| python manage.py makemigrations
python manage.py migrate
|
테이블의 새로운 변경사항을 반영하는 작업
Admin에 추가완료
1
2
3
4
5
6
7
| from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('bookmark/',include('bookmark.urls'))
path('admin/', admin.site.urls),
]
|
views.py 설정 : Logic
template 설정
1
2
3
4
5
| mkdir templates
cd templates
mkdir bookmark
cd bookmark
vi bookmark_list.html
|
Admin에서 데이터 작성~