20191022 TIL - django Endpoint(2)

박경연 (돌진어흥이)·2019년 10월 27일
0

djangoAPI

목록 보기
2/2
post-custom-banner

django 프로젝트의 python앱 만들기를 진행해보려한다.

  1. 앱생성
  • 매우 간단하다.
python manage.py startapp 앱명칭
  • 이번에는 Front-end에서 만든 로그인, 코멘트 작성을 연결하기 위하여 다음과 같은 앱을 만들었다.
python manage.py startapp comment
python manage.py startapp account
  • 해당 프로젝트 디렉토리에 프로젝트 이름으로된 하위 디렉토리를 제외하고, 앱이름으로 지정한 두개의 디렉토리가 생겼다면 성공이다.
  1. settings.py의 Installed App에 생성한 App을 등록하여 앱을 프로젝트에 포함시킨다
  • 필자가 만든 두가지 앱을 포함시킨다.
INSTALLED_APPS = [
#    'django.contrib.admin',
#    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'comment',
    'account',
]
  1. 모델 설계
  • 모델? : django의 공식튜토리얼은 모델을 다음과 같이 정의한다.

    모델이란 부가적인 메타데이터를 가진 데이터베이스의 구조(layout)를 말합니다.

  • 필자는 모델의 정의를 데이터를 기록하고 관리하기 위해 데이터베이스의 스키마를 설계하듯, django에서 모델을 설계하여 해당 앱의 데이터베이스를 관리한다는 것으로 이해하였다.
  • models.py 작성
    우선 wecode 2주차부터 진행하였던 인스타그램 클론의 회원가입 및 로그인 관련 기능을 구현하기 위해 account앱의 디렉토리내에 위치한 models.py를 작성하였다.
from django.db import models
# Create your models here.
class Account(models.Model):
    user_id = models.CharField(max_length = 100, unique = True)
    email = models.CharField(max_length = 100, unique = True) 
    password = models.CharField(max_length = 200)
    created_at = models.DateTimeField(auto_now_add = True)
    upadated_at = models.DateTimeField(auto_now = True)
    class Meta:
        db_table = "account" 

userid, e-mail : 문자열을 저장할 수 있도록 CharField로 지정해주었고 user_id와 e-mail모두 중복되지 않아야 한다고 생각되어 unique = True값을 주었다
password : 추후 암호화할 것을 생각하여 200자의 제한으로 넉넉히 공간을 확보하였다.
created_at : 생성시각에 대한 정보. DateTimeField로 지정해주었다. auto_now_add = True를 설정할 경우, 해당 테이블에 새로운 행이 생길때마다 시간정보를 저장해준다
updated_at : 역시 DateTimeField로 지정. 해당 테이블의 해당된 행이 업데이트되었을 때마다 시간정보를 저장해준다. 아마도 최근 유저정보 변경 내역을 확인하려할 때 사용할 수 있을것으로 보인다.
class Meta : 모델의 메타데이터에 관한 클래스. db-table = "account"를 설정하여 해당 테이블의 이름을 account로 지정해 주었다.
(만약 이를 지정해주지 않으면, 앱명
모델명으로 테이블 명이 자동 지정되게 된다. 위 모델의 경우 account_Account가 되므로 account로 따로 지정해주었다.)

  • Migration
    모델을 모두 설계한 후 다음 명령을 실행하면 해당 앱에 마이그레이션이 저장된다.
python manage.py makemigrations account

해당 앱 디렉토리의 하위에 migrations에 파일이 생성되었다면 성공.
이제 마이그레이션을 실행시켜 실제 데이터베이스에 변경된 마이그레이션 사항들을 적용시킨다.

python manage.py migrate

해당 프로젝트의 db를 열어(필자는 DB_Browser_for_sqlite3사용) 내가 설계한대로 테이블이 짜여진 것을 확인 가능하다.
스크린샷, 2019-10-27 22-36-57.png
(필자는 해당 과정 모두 진행한 후에, 데이터 입력까지 진행해보았기 때문에 데이터가 입력되어있다.)

profile
Back-end Developer, pursuing to be a steadily improving person.
post-custom-banner

0개의 댓글