본문 바로가기
Developer/Django

[Django] 프로젝트 및 앱 생성, Admin 계정, 기본 모델 생성

by Doony 2020. 11. 11.

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를 각각 입력한 뒤 다시 웹서버에 접속하여 로그인할 수 있습니다.
어드민 페이지에는 아직 모델 작업을 하지 않았기 때문에 별다른 특징은 없습니다.

댓글