4. 실전 프로젝트 - 북마크 - 1

2019. 6. 3. 12:17파이썬 웹프로그래밍

이전 장까지 배웠던 내용을 머리속으로 떠올려 보면서 실제 프로젝트를 하나씩 만들어 보겠습니다. 하나의 장에서 사용한 내용은 다음 장에서도 동일하게 사용할 것입니다. 기능 하나하나를 본인이 만들고 싶은 프로젝트에 어떻게 적용할지 고민하면서 따라해 보세요.

이번 장에서는 북마크 서비스를 만들어보겠습니다. 인터넷 즐겨찾기 관리 서비스입니다. 간단하게 모델을 만들고 CRUD 페이지 들을 구현해 실제로 하나의 서비스를 만들 때 기본이 되는 앱 단위의 기능 개발을 어떻게 해야할지 배워보겠습니다.

4.1. 프로젝트 만들기

항상 시작은 프로젝트 만들기부터 입니다. 파이참을 열고 [Create New Project] 버튼을 클릭해 새로운 프로젝트를 생성합니다.

프로젝트 이름은 [bookmark]로 설정하고 가상환경도 추가합니다. 모든 설정을 확인 했다면 [Create] 버튼을 클릭합니다.

프로젝트를 만들었다면 파이참에서 터미널을 열고 장고를 설치 합니다.

pip install django

장고를 설치하면 장고 프로젝트를 생성합니다. 프로젝트를 생성할 때는 [startproject]명령을 사용하고 [config]는 설정 촐더의 이름입니다.

django-admin startproject config .

바로 데이터베이스를 초기화 하고 관리자 계정을 생성합니다.

python manage.py migrate

python manage.py createsuperuser

여기까지 성공하셨다면 서버를 실행하고 관리자 페이지에 로그인을 해봅시다. 다음 명령을 입력해 서버를 실행합니다.

python manage.py runserver

서버를 실행하고 http://127.0.0.1:8000/ 로 접속하면 장고가 설치 후 잘 동작한다는 메시지가 나타납니다.

서버 실행 후 첫 화면

관리자 아이디도 잘 생성한 것인지 로그인을 통해 확인해 보겠습니다.

http://127.0.0.1:8000/admin/ 페이지로 접속합니다.

관리자 페이지 로그인

나타난 로그인 화면에 미리 생성해둔 관리자 계정 정보를 입력하고 [Login] 버튼을 클릭합니다.

관리자 로그인 후 첫 화면

위의 그림처럼 관리자 페이지가 보인다면 로그인에 성공한 것입니다. 이제 웹 서비스 개발을 시작할 수 있습니다.

다음 단계를 위해 [Ctrl+C]키를 눌러 서버를 종료하고 다음 단계로 넘어 가겠습니다.

 

4.2. Bookmark 앱 생성하기

프로젝트를 만들고 나서 어떤 기능들을 만들고 싶다면 앱을 만들어야 합니다.

python manage.py startapp bookmark

위의 명령어를 입력하면 앱을 만들 수 있습니다.

bookmark 앱 생성 후

앱을 생성하면 관련 폴더와 파일이 생깁니다. 중요한 파일들은 admin.py, models.py, views.py 입니다. 기능을 완성하면서 각 파일들의 내용을 채워 보겠습니다.

 

4.3. 모델 만들기

모델은 데이터베이스 사용을 쉽게 하기 위해 사용하는 도구 입니다. 웹 서비스를 만들면서 뭔가 데이터베이스에 저장하면서 사용해야겠다 라는 데이터가 있다면 모델을 만든다고 생각하면 됩니다.

북마크 기능에는 북마크에 관한 정보를 데이터베이스에 저장해야 합니다. 모델을 작성해서 해당 자료를 데이터베이스에 저장할 수 있도록 하겠습니다.

from django.db import models

class Bookmark(models.Model):
    site_name=models.CharField(max_length=100)
    url=models.URLField('Site URL')

models.py에 models.Model을 상속받는 Bookmark 클래스를 만듭니다. 이것이 바로 모델의 기본입니다. 모델 안에는 두 개의 클래스 변수가 있습니다. 앞으로는 이것을 필드라고 부르겠습니다. site_name과 url이라는 두 개의 필드를 만드는데 데이터베이스에 이 두가지의 정보를 저장하려고 만들었습니다. 그리고 이 정보가 기록되는 테이블의 이름은 bookmark입니다.

저자의 한마디

데이터베이스에 생성되는 테이블의 이름은 보통 모델의 이름을 따라 만들어 집니다. 이 때 모델의 이름만 사용하는 것이 아니라 [앱이름_모델이름] 형태로 만들어집니다. 물론 옵션을 사용해서 이 규칙을 바꿀 수도 있습니다.

이 모델을 이용해 데이터베이스에 테이블을 생성하려면 두 가지의 명령어를 입력해야 합니다. 그리고 데이터베이스 관련 명령어가 제대로 동작하려면 settings.py에 bookmark앱을 사용하기 위한 설정을 추가해야 합니다.

settings.py 파일을 열고 INSTALLED_APPS 변수 끝에 'bookmark'를 추가합니다. 맨 끝에 ,(콤마)를 써 넣는 것도 잊지 않습니다. 빼놓더라도 오류는 나지 않지만 다른 앱을 추가할 때 빈번이 실수하는 부분이기 때문에 습관처럼 콤마를 추가해두는 것이 좋습니다.

INSTALLED_APPS=[
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'bookmark',

]

INSTALLED_APPS에 추가 했다면 이제 데이터베이스 관련 명령이 정상적으로 동작할 것입니다. 터미널을 열고 다음 명령어를 입력합니다.

python manage.py makemigrations bookmark

북마크 앱에서 데이터베이스 관련 변경사항이 있는지 확인하고 변경할 내용이 있다면 파일을 생성합니다. 이런 파일을 마이그레이션 파일이라고 합니다. 각 파일은 번호가 하나씩 증가하며 앱 폴더에 있는 migrations 폴더에 순서대로 쌓입니다.

마이그레이션 파일 생성

마이그레이션 파일의 내용을 실제 데이터베이스에 적용하기 위해 다음 명령을 입력합니다.

python manage.py migrate bookmark

모델과 연결된 데이터베이스가 생성됐습니다. 이제 북마크를 추가, 확인, 수정, 삭제 해야하는데 당장은 페이지를 만들지 않았기 때문에 관리자 페이지를 통해서 확인해야하겠습니다.