💡수업 목표💡
- Django의 구조를 알아보고, 필요한 기초 명령들을 익혀본다.
- 데이터 베이스를 연결하고, 데이터베이스를 사용하는 방법을 알아본다.
- 사용자 모델을 만들고, 회원가입과 로그인 기능을 직접 만든다.
데이터베이스와 Model
데이터베이스란?
데이터베이스는 Django를 통해서 처리한 어떤 데이터들을 서버에 저장하기 위한 곳이다.
데이터베이스를 여러 종류가 있지만 Django는 sqlite를 기본으로사용한다. sqlite에서 데이터를 조회하거나 저장하려면 원래는 쿼리문을 사용해야하지만, Django에서는 ORM(Object Relational Mapping)를 통해 데이터베이스의 테이블을 모델화해서 사용하기때문에 테이블 작업을 위해 직접 쿼리문을 수행하지 않아도 된다.
VSCode에서 db.sqlite 연결하기
SQLite 패키지 설치
command + shift + P 를 눌러서 SQLite:Open Database 클릭후 SQLite Explorer에서 확인
PyCharm에서 db.sqlite 연결하기
파이참 우측에 보면, 'Database'라는 탭 란이 있습니다. 이 란을 눌러서 펼쳐주세요! 펼쳐진 데이터베이스 화면에서, 'Data Source from Path'를 눌러주세요.
나오는 팝업창에서, 방금 Django가 생성 한 db.sqlite3를 선택해준다. Open을 누르고 나오는 확인 창의 OK를 눌러주시고 마지막으로 연결 정보를 확인하는 창 까지 완료 해 주면
데이터베이스를 확인 할 수 있다.
Model 작성하기
Django에서는 데이터베이스의 테이블을 하나의 객체로 생각한다. 모든 Model 객체는 models.py파일에 선언해서 모델을 만든다.
blog/models.py
from django.db import models
# Create your models here.
class PostModel(models.Model): #PostModel이 Django의 Model임을 의미. 객체상속
# model의 필드
author = models.CharField(max_length=100, null=False)
title = models.CharField(max_length=256)
text = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
# model의 메타정보
class Meta:
db_table = "post"
def __str__(self):
return self.title
Model 필드 타입과 옵션
데이터베이스 필드 이름 선언을 모두 소문자로 하고 _로 띄어쓴다.
필드를 정의하기 위해, 필드마다 어떤 종류의 데이터 타입을 가지는지를 정해야 한다. 데이터 타입에는 텍스트, 숫자, 날짜, 사용자 같은 다른 객체 참조 등이 있다.
- models.CharField() : 글자 수가 제한된 짧은 문자열 텍스트를 정의할 때 사용.
- models.TextField() : 글자 수에 제한이 없는 긴 텍스트를 위한 속성
- models.IntegerField(), models.FloatField() : 숫자를 정의할때 사용하는 속성.
- models.DateTimeField(), models.DateField(), models.TimeField() : 날짜와 시간을 의미하는 속성
- default : 기본적으로 사용될 날짜를 사용자가 지정
- auto_now : 데이터가 수정될 때마다 갱신됨
- auto_now_add : 데이터가 생성될때 기록
- models.ForeignKey() : 다른 모델에 대한 링크
Model field reference | Django documentation | Django
Meta 클래스 옵션
meta 클래스는 필드 선언 밑에 한줄 띄고 위치해야한다.
- db_table : 모델이 참조하는 테이블 이름으로 설정.
- ordering : 모델 객체의 기본 정렬 방법을 변경할때 사용. 기본값은 오름차순, - 붙이면 내림차순 여러 개를 지정할 경우 필드 이름을 리스트로 나열.
- verbose_name, verbose_name_plural : admin 사이트의 모델 표기 방법 변경
class Post(models.Model):
# 필드
class Meta:
db_table = 'mypost'
# 오름차순 ordering = ['no'] / 내림차순 ordering = ['-no']
ordering = ['-created_at', 'author']
verbose_name = '포스트' # 단수형
verbose_name_plural = '포스트 그룹' # 복수형
주요 메서드
- 모든 데이터베이스 필드
- 커스텀 매니저 속성
- Meta 클래스
- def __init__() 메소드
- def __str__() 메소드
- def save() 메소드
- def get_absolute_url() 메소드
- 기타 커스텀 메소드
migrate로 테이블 생성하기
makemigrations를 통해서 장고에게 모델의 신규생성 또는 변경을 알려줘서 장고가 데이터베이스에 반영할수 있도록 준비한다.
# 장고가 테이블 작업을 수행하기 위한 작업 파일(예: 0001_initial.py)을 생성하는 명령어
$ python manage.py makemigrations
migrate 명령을 수행하여 실제 테이블을 생성.
# 실제 테이블을 생성
$ python manage.py migrate
SQLite Explorer 통해서 실제로 데이터베이스 테이블이 생성되었는지 확인이 가능하다.
'스파르타코딩클럽 > Python' 카테고리의 다른 글
파이썬 Django 기초 - 2주차 (1) Django 프로젝트 구조 (0) | 2022.09.28 |
---|---|
파이썬 Django 기초 - 1주차 (1) | 2022.09.26 |
Python에서 venv로 가상 환경 사용하기 (2) | 2022.09.26 |
Python 설치 및 IDE 설정 (1) | 2022.09.26 |
Python 기초문법 뽀개기 (0) | 2022.09.03 |