Model은 Django의 MTV패턴 중 'M'을 담당한다.
프로젝트에서 회원 관리 등을 담당하는 데이터베이스를 SQL문 없이 App에 접근할 수 있게 해줌
VScode를 열고 프로젝트 → App폴더를 열면 __init__.py
, apps.py
, urls.py
등 등의 Python 파일들이 있는 것을 확인 할 수 있다! 그 중 models.py
파일 열기!
models.py
파일 작성
from django.db import models
# Create your models here.
# ORM의 역할 : SQL을 직접 작성하지 않아도 DB로 접근해 CRUD(조회/추가/수정/삭제)가 가능하게 해준다.
# 이 Model은 Create의 Table문이라고 생각하면 된다!
class User(models.Model):
# 테이블명은 단수로 적어주어야 한다. 괄호()안은 모델을 만들기 위한 규칙. 얘는 지금 모델입니다~
userid = models.CharField(max_length=64, verbose_name='아이디')
# userid는 컬럼명
# CharField는 문자열 필드. Varchar랑 용도 유사
# max_length는 최대 길이, 길이 제한.
username = models.CharField(max_length=64, verbose_name='이름')
password = models.CharField(max_length=64, verbose_name='비밀번호')
registered = models.DateTimeField(auto_now_add=True, verbose_name='등록')
# DataTimeField auto_now_add=True > DB테이블에 자동 기입될 현재 시각
# 0000-00-00 00:00:00 datetime
GENDERS = ( ('M', '남성(Man'), ('W', '여성(Woman)') )
gender = models.CharField(max_length=1, verbose_name='성별', choices=GENDERS)
# enum( 'M' , 'W' ), 'M'과 'W' 뒤에 오는 인자는 verbose의 별칭으로 적용된다.
# enum의 개념은 리스트형. 해당 컬럼의 데이터 타입 enum(1,2,3,4,5,6,7)
# =True (기본값은 False)
True/False
값을 저장하는 필드.Putty 터미널을 실행시켜서 다음과 같은 명령어를 실행시킨다.
python3 manage.py makemigrations
그 다음 Migration을 적용시키기 위해서 다음과 같은 명령어를 실행시킨다.
python3 manage.py migrate
여기까지 하면 변경 사항과 DB의 스키마 동기화 작업이 다 완료된 것이다😀
Migration 상태를 확인해보고 싶다면 다음과 같이 명령어를 입력하면 된다.
python3 manage.py showmigrations
관리자 페이지 내용을 영어가 아닌 한글로 보고 싶다면 'settings.py' 안에서 다음과 같이 수정한다.
models.py
이 있는 App폴더에 같은 위치에 있는 admin.py
파일을 작성한다.from django.contrib import admin
from .models import User
# Register your models here.
admin.site.register(User)
# admin이라는 사이트에 user를 등록할 것이다.
[본인 IP주소]:[본인 Port번호]/admin
접속로그인을 할 때 슈퍼관리자의 계정이 필요함
우분투 터미널에서 슈퍼관리자의 계정과 비밀번호를 설정할 수 있음
python3 manage.py createsuperuser
사용자이름(default : root)
, 이메일주소
, 비밀번호
를 새로 만들어준다.
위의 과정을 다 마쳤으면 관리자 로그인 페이지에서 로그인 해보기!
로그인 성공!!ヾ(≧▽≦*)o
models.py
에서 작성했던 필드가 반영이 된 것을 확인 할 수 있다!
Model 파일에서 필드를 추가할 때 다음과 같은 사항들이 반영되지 않으면 에러가 발생할 수 있다!
Ex) username = models.CharField(max_length=64, verbose_name='이름', '여기에 들어갈 내용')
null=True
(NULL을 허용해주기)default= 알아서 적기
(기본값을 지정해준다.)서버를 실행시키다 보면 해당 Port는 이미 사용중이라는 메세지가 뜰 때가 있다. 이 때 진짜 뇌정지옴
그럴 땐 실행 중인 Port를 죽여야 하는 데 다음과 같이 조치하면 된다!
Putty 터미널창에 다음과 같은 명령어 입력
netstat -tnlp
그 후 출력되는 화면 중 본인의 PID번호
확인
아래 명령어를 입력해서 Port를 죽인다.
kill -9 'PID'