Django
장고의 MVT 패턴
사용자가 요청 > url conf: 사용자가 어떤 주소로 접근할 수 있게 정해주는 공간 > View: url에서 어떤 기능을 할건지 만들어주는 공간 > Model > db > Model > View > Template > user
M(model)
- 데이터베이스의 모델(orm)
- 저장되고 사용되는 데이터의 형태
T(template)
- 사용자에게 보여지는 부분
- 화면
V(view)
- 실질적으로 프로그램이 동작하는 부분
- url을 요청하고 응답하는 그 사이에 일어나는 서비스들이 존재하는 곳
ORM(Object Relational Mapping): 데이터베이스를 하나의 ‘객체(Object)’로 보고, 데이터베이스를 sql 언어가 아닌 클래스로 표현 및 사용 할 수 있게 해줌
장고 모델 만들기(유저 앱, 트윗 앱 만들기)
$ django-admin startapp user
$ django-admin startapp tweet
해당 명령어들을 통해 유저 앱과 트윗 앱 생성
프로젝트 앱 폴더의 세팅 파일 수정
INSTALLED_APPS 부분에 생성한 앱 이름 추가: ‘tweet’, ‘user’, (끝에 쉼표!)
Db 연결(sql lite)
앱 추가 후 장고를 실행하면 db.sqllite3 파일이 생성됨
파이참 우측 데이터베이스 탭을 실행시켜서 data source from path 메뉴 선택하여 해당 파일 추가(sqlite 드라이버 추가!) 후 연결 테스트, 적용을 완료하고 적용
유저 모델 추가
유저 앱 폴더의 모델 파일에 하단 코드 추가
#user/models.py
from django.db import models
# Create your models here.
class UserModel(models.Model):
class Meta:
db_table = "my_user" # 해당 모델의 정보. 해당 코드에서는 테이블 이름만 정해줌
username = models.CharField(max_length=20, null=False)
password = models.CharField(max_length=256, null=False)
bio = models.CharField(max_length=256, default='')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
# 각 요소들에 어떤 데이터의 형식이 들어갈 지 정한 뒤 필드에 제한 설정
# 각종 필드 종류
# 문자열 : CharField, TextField
# 날짜/시간: DateTimeField, DateField, TimeField
# 숫자 : IntegerField, FloatField
# 다른 테이블과 연관을 지어 줄 때 : ForeignKey
작성 완료 후 장고 실행, 하단 코드 실행
python manage.py makemigrations (데이터베이스 변경을 알려주는 명령어)
python manage.py migrate (변경된 데이터베이스를 반영하는 명령어)
데이터베이스 확인
python manage.py createsuperuser (admin 계정 생성)
admin 페이지 접속 후 로그인
관리자 페이지에 데이터베이스 모델 등록
유저 앱의 어드민 파일에 하단 코드 작성하면 등록 완료. 같은 방법으로 트윗 앱도 추가
from django.contrib import admin
from .models import UserModel
# Register your models here.
admin.site.register(UserModel) # UserModel을 Admin에 추가