Django를 통해 웹페이지 및 REST API를 만드는 프로젝트를 진행하고 있습니다. 이에 따라 기본적인 장고 프레임워크 사용 방법 등에 대해 하나씩 포스팅해보겠습니다.
Django 프로젝트 설치
저는 파이참을 사용하고 있는데요. 가상환경이 자동으로 설정되기 때문에, 해당 프로젝트에서 Django 라이브러리릋 찾아 설치합니다.
프로젝트 생성
터이널에 다음 명령어를 입력합니다.
django-admin startproject DoonyProject
DoonyProject
라는 이름의 프로젝트가 생성되는 것을 볼 수 있습니다. 폴더 트리에 나타납니다.
앱 생성
터미널에 다음 명령어를 입력합니다.
python manage.py startapp doonyApp
doonyApp
라는 이름의 앱을 생성합니다. 폴더 트리에 나타납니다.
프로젝트는 말그대로 만들고자 하는 프로젝트를 의미합니다. 앱은 프로젝트 안에 여러개를 만들 수 있으며, 기능 구성을 의미한다고 볼 수 있습니다.
이렇게 생성된 앱은 프로젝트에서 선언해줘야 사용할 수 있습니다. 프로젝트의 settings.py
에 보면 INSTALLED_APPS
가 있는데, 거기에 생성된 앱 이름, 즉 doonyApp
을 추가해줍니다.
장고의 MTV
예전에 안드로이드/iOS 개발을 할 때에도 아키텍쳐나 패턴에 대한 얘기를 많이 들었습니다. 결론은, 누가 작업해도 보기 쉽고 적응할 수 있도록 일종의 통일된 규격으로 코드를 짜는 것을 말하는 것 같았습니다.
장고에도 기본적으로 그런 아키텍쳐가 있고, 모바일 앱과 크게 다르지 않습니다.
Model, View, Template으로 구성됩니다.
Model
모델을 데이터베이스를 얘기합니다. 가령 사용자 정보를 담은 데이터 베이스, 각종 거래 정보가 담긴 데이터베이스 등 다양할 수 있겠습니다.
Template
웹에서 HTML로 표현되는 부분을 말합니다.
View
모델과 Template 을 연결하고, 각종 로직을 담는 곳을 얘기합니다.
즉, 데이터베이스와 UI(Template)을 구분하고, 로직은 View를 통해 연결함으로써 보다 구분이 쉽고 작업이 용이하게 한 것이 특징이라고 볼 수 있겠습니다.
위에서 생성한 앱에 따라 각각 model.py
가 생성됩니다.
모델 파일을 아래와 같이 변경해봅니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from django.db import models # Create your models here. class DoonyUsers(models.Model): username = models.CharField(max_length=64, verbose_name='사용자명') password = models.CharField(max_length=64, verbose_name='비밀번호') registered_dttm = models.DateTimeField(auto_now_add=True, verbose_name='등록시간') def __str__(self): return self.username class Meta: db_table = 'DoonyUser' verbose_name = '두니두니 사용자' verbose_name_plural = '두니두니 사용자' | cs |
모델은 베이터베이스라고 언급드렸는데, 데이터베이스의 테이블을 짜는 과정이라고 볼 수 있습니다. 저는 위에서 사용자명과 비밀번호, 그리고 등록시간이라는 3개의 인덱스를 넣어줬습니다.
이 때, 이름과 비밀번호는 CharField
로 하여 문자를 인식하게 하고, 64자까지만 받습니다. 등록시간의 경우 자동으로 현재 시간으로 올리기 위해 auto_now_add=True
라는 파라미터를 넣어줬습니다.
def __str__
의 경우, 이 모델에 해당하는 데이터들이 보여질 대표값을 의미합니다. 사용자명으로 리턴값을 주면, 데이터의 대표값이 사용자명으로 뜨게 됩니다.
class Meta
의 경우, 잠시 뒤 확인할 어드민 페이지에서 데이터베이스를 표기할 방식을 정의할 수 있게 해줍니다. 즉, 테이블 명을 지정하고, 데이터베이스 이름은 두니두니 사용자
로 선언했습니다. plural
의 경우 복수형을 의미하는데, 설정하지 않으면 영어의 복수형태인 s가 끝에 붙기 때문에 별도로 지정해줬습니다.
마이그레이션
이렇게 모델까지 지정했으면, migration
을 통해 반영해야합니다.
python manage.py makemigrations
: 마이그레이션을 할 리스트를 보여주고 파일을 생성합니다.python manage.py migrate
: 위 리스트를 모두 마이그레이트합니다. 즉, DB에 반영합니다.
여기까지 기본 준비가 끝났으니, 이제 웹 페이지의 형태로 봐보도록 하겠습니다.
서버 만들기
아직 프로젝트와 앱 생성밖에 하지 않았지만, 디폴트로 UI를 갖고 있기 때문에 바로 서버를 만들어 실행해볼 수 있습니다.python manage.py runserver
커맨드 라인에서 다음과 같은 메시지를 볼 수 있습니다.
Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
11월 10, 2020 - 15:50:53
Django version 3.1, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
마지막에 나온 인터넷 주소를 인터넷 창에 띄우면, 생성한 프로젝트 웹페이지를 확인할 수 있습니다.
어드민 관리자계정 만들기
Django는 기본적으로 어드민 관리 기능을 내장하고 있습니다.
위에 나타난 인터넷 주소창에 admin을 붙인 다음 주소를 인터넷에 연결해보세요.
http://127.0.0.1:8000/admin
관리자 계정 페이지가 나타나는데, 이 때 관리자 계정이 필요합니다.
관리자 계정은 다음 코드를 통해 터미널에서 생성할 수 있습니다.
python manage.py createsuperuser
아이디와 PW를 각각 입력한 뒤 다시 웹서버에 접속하여 로그인할 수 있습니다.
어드민 페이지에는 아직 모델 작업을 하지 않았기 때문에 별다른 특징은 없습니다.
'Developer > Django' 카테고리의 다른 글
[Django] MTV - Template 상속하기 (0) | 2020.11.28 |
---|---|
[Django] Bootstrap 스타일 적용하기 (0) | 2020.11.27 |
[Django] GET, POST 메소드 구현 (0) | 2020.11.26 |
[Django] URL 연결하기 (0) | 2020.11.25 |
[Django] 모델 테이블 분리해서 어드민 페이지에 보여주기 (0) | 2020.11.24 |
댓글