티스토리 뷰

일단 [짤방 검색기]#8-1. Django를 셋팅하자를 잘 수행했다면 이제 몇가지 명령을 통해 제대로 셋팅이 되었는지 확인해볼 차례다.

 

데이터베이스 세팅 확인하기

cmd 창에다가 아래와 같이 입력해보자.

(.env) $ python funny_picture\manage.py makemigrations
(.env) $ python funny_picture\manage.py migrate

이렇게 입력하면 아래와 같이 cmd 창에 메시지들이 표시될거다.

 

이것은 일단 Django에 기본적으로 적용되어있는 Apps에 기본적으로 탑재 되어있는 DB 정보를 적용하는 과정인데 makemigrations와 migrate 명령은 앞으로 많이 사용할 명령이니 외워두는 것이 도움이 된다. 암튼 위와 같이 결과가 나온다면 성공이고 에러메시지가 나온다면 DB 설정이 잘못된 것이니 [짤방 검색기]#8-1. Django를 셋팅하자의 DB셋팅 부분을 다시 한번 확인하고 셋팅하도록 하자.

 

이렇게 작업을 마무리 하고 나서 MySQL Workbench를 확인해보면 자동으로 테이블들이 생성된 것을 확인할 수 있다.

예전에는 Table들을 직접 설계하고 DBA(DataBase Administrator)한테 가서 DB에 적용해달라고 하거나 직접 한땀한땀 만들었는데 이제는 코드로 테이블을 코딩 한 다음 migrate와 같은 명령을 입력하면 연결된 데이터베이스에 자동으로 테이블의 정보를 생성, 수정, 삭제할 수 있게 되었다. 이런 것이 ORM(Object-Relational Mapping: 객체 관계 매핑)의 기능 중 하나로 이제 데이터베이스에 대해 잘 알지 못해도 개발하는데 문제가 없게 되었다.(물론, 복잡한 문제를 다뤄야할 때는 어쩔 수 없이 데이터베이스에 대해 공부를 해야겠지만..)

 

Restframework를 확인하자

자, 그럼 이제 앱을 하나 만들어 보도록 하자.

cmd에 아래와 같이 명령을 입력한다.

(.env) $ cd funny_picture
(.env) $ django-admin startapp account

이렇게 입력하면 funny_picture 폴더 안에 account 폴더가 생성된 것을 확인할 수 있다. 일단 Django의 App이라는 것에 대해 잠깐 짚고 가자.

 

Django 프로젝트의 표면적 구조

 

일단 Django는 프로젝트를 위한 몇가지 명령과 셋팅들을 가지고 있고 이 명령을 통해 프로젝트의 생성, 앱의 생성, DB ORM기능을 비롯한 여러가지 기본 앱들을 내장하고 있고 이들은 프로젝트 생성시 기능을 제공하도록 설계되어있다.

 

생성된 프로젝트는 프로젝트 전체에서 사용되는 셋팅(예를들어 DB의 주소나 언어, 시간대와 같은)이나 사용할 App이나 모듈, 미들웨어(통신과정에서 서버와 사용자 사이에서 동작하는 중간 전달자 프로그램)들을 설정할 수 있다.

 

그리고 앱들은 프로젝트와 엮여서 각 기능을 직접적으로 수행하는 하나하나의 모듈이라고 보면 Django 프로젝트의 표면적 구조를 제대로 이해하고 있다고 볼 수 있다.

 

자, 그럼 방금 설치한 account라는 앱을 settings.py에 등록해보자.

settings.py 파일의 약 33번째 라인을 보면 INSTALLED_APPS 라는 항목이 있을 거다. 거기에 아래와 같이 두가지 항목을 추가하도록 하자.

 

/* 생략 */

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework', # restframework 앱 추가
    'account.apps.AccountConfig' # account 앱 추가
]

/* 생략 */

일단 rest_framework는 내가 지난 시간에 먼저 추가했어야 했는데 깜빡해서 이번에 추가한 내용이고 account.apps.AccountConfig는 이번에 startapp으로 생성한 앱의 설정 클래스를 넣어준거다. 이렇게 설정하고 서버를 재기동하면 Django는 자동으로 해당 앱을 감지하여 앱을 사용할 수 있도록 해준다.

 

이제 앱에 코드를 넣어보고 정상적으로 동작하는지 확인해보도록 하자.

 

account/views.py

from django.shortcuts import render

from rest_framework.views       import APIView
from rest_framework.response    import Response

class HelloView(APIView):
    name = 'hello-view'

    def get(self, request, *args, **kwargs):
        return Response({'hello': 'world!'})

 

위와 같이 코딩을 마쳤으면 account 폴더 아래에 urls.py 파일을 하나 만들고 아래처럼 코딩한다.

 

account/urls.py

from django.conf.urls import url
from .views import *

urlpatterns = [
    url(r'^v1/hello', HelloView.as_view(), name=HelloView.name)
]

 

이렇게 작성한 뒤에 저장을 하고 funny_picture 폴더 아래에 있는 urls.py 파일에 아래와 같이 코딩하도록 하자.

 

funny_picture/urls.py

from django.contrib import admin
from django.urls import path
from django.conf.urls   import include, url

urlpatterns = [
    path(r'', include('account.urls'))
]

아마 이전에 먼저 admin 과 관련된 내용이 있었을텐데 admin은 사실 필요없다. 그래서 지워 버리고 방금 우리가 만든 account의 urls 를 등록하도록 하자. 이렇게 코딩을 하면 HelloView 클래스를 account/urls.py에 "v1/hello" 라는 경로로 등록했고 funny_picture/urls.py에 'account.urls'라고 포함시킨거다.

 

※ 참고

잘 보면 account.urls 라고 코딩되어있는데 urls.py라고 뒤에 ".py"를 안 붙이는 이유는 코드 상에서는 .py를 붙일 필요가 없기 때문이다. 그리고 account/urls.py 라며 경로를 붙일 때는 Slash(/) 를 안붙이고 점(.)을 붙여주는 차이가 있다.

 

이렇게 하고 F5 키를 눌러준다.

혹시 왼쪽과 같은 아이콘 뭉치가 떠있다면 빨강색 네모 아이콘을 클릭해서 현재 가동하고 있는 서버를 정지한 뒤에 F5키를 눌러준다. 아니면 녹색 동그라미 화살표 아이콘을 클릭해도 상관없다. 잘 안되면 터미널 패널의 쓰레기통 아이콘을 클릭하여 모든 터미널을 종료한 뒤에 F5키를 눌러주면 된다.

 

암튼 서버를 기동하고 "http://127.0.0.1:8000/v1/hello/" 에 접속해본다.

정상적으로 페이지가 로드 된다면 위와 같은 화면이 제공될 것이다. 이 페이지는 Django에서 제공되는 Browser 렌더러에 의해 자동으로 만들어지는 페이지다. 그리고 정상적으로 "hello":"world" 가 로딩된 것을 확인 할 수 있다.

 

Django를 DB와 연동시키고 hello라는 API를 만들어 테스트를 했다.

이제 다음 포스트부터 관리자 등록, 로그인 할 수 있도록 account 앱을 발전시켜보도록 하겠다. 그러고 나면 이제 짤방을 등록하고 짤방을 검색할 수 있게 되겠지.

 

오늘은 여기까지 작업하겠다.

 

안녕!

댓글
댓글쓰기 폼