Post

Django 끄적이기 2

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 프로젝트의 설정을 담당하는 파일로, 데이터베이스, 템플릿, 정적 파일 등의 설정을 포함합니다.

  1. 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' : ''
    }
}
  1. 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',
            ],
        },
    },
]
  • 경로를 잘잡아줘야함
  1. static 설정
1
2
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
  1. 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. 시간 설정
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
  • template
1
2
3
TEMPLATES = [
  'DIRS' : [os.path.join(BASE_DIR,'templates'),]
]
  • static
1
2
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
  • time
1
TIME_ZONE = 'Asia/Seoul'
  • media : 업로드 기능
1
2
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
  • migrate
1
python manage.py migrate
  • superuser
1
python manage.py createsuperuser
  • app 생성
1
python manage.py startapp bookmark
  • app 등록
1
2
3
4
5
vi settings.py

INSTALLED_APPS = [
  'bookmark',
]
  • models.py 정의하기

models.py와 admin.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만 보일 것이다.

  • migrate
1
2
python manage.py makemigrations
python manage.py migrate

테이블의 새로운 변경사항을 반영하는 작업

Admin에 추가완료

  • urls.py 설정
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
  • html 작성

Admin에서 데이터 작성~

This post is licensed under CC BY 4.0 by the author.