[2024.03.14] Django - Model

체리마루·2024년 3월 14일
0

Django URLs

  • URL dispatcher (운항 관리자, 분배기)
    : URL 패턴을 정의하고 해당 패턴이 일치하는 요청을 처리할 view 함수를 연결(매핑)

App과 URL

  • App URL mapping
    : 각 앱에 URL을 정의하는 것 => 프로젝트와 각 앱이 URL을 나누어 관리를 편하게 하기 위함

"URL을 각자 app에서 관리하자"

  • include()
    : 프로젝트 내부 앱들의 URL을 참조할 수 있도록 매핑하는 함수
    => URL의 일치하는 부분까지 잘라내고, 남은 문자열 부분은 후속 처리를 위해 include된 URL로 전달

URL 이름 지정

  • Naming URL patterns
    : URL에 이름을 지정하는 것 (path 함수의 name 인자를 정의해서 사용)

URL 이름 공간


Django Model

Model

  • Django Model
    : DB의 테이블을 정의하고 데이터를 조작할 수 있는 기능들을 제공 => 테이블 구조를 설계하는 '청사진(blueprint)'

ex) throw-catch 데이터들은 새로고침을 하면 사라짐 => model을 쓰지 않으므로 휘발됨

  • 데이터베이스는 테이블들의 집합. 데이터베이스에 무언가가 저장될 때는 항상 테이블의 형태로 저장됨.


  • 제약 조건
    : 데이터가 올바르게 저장되고 관리되도록 하기 위한 규칙
    => ex) 숫자만 저장되도록, 문자가 100자까지만 저장되도록 하는 등..

Migrations

  • Migrations
    : model 클래스의 변경사항(필드 생성, 수정 삭제 등)을 DB에 최종 반영하는 방법

  • 이미 생성된 테이블에 필드를 추가하려면?




  • model class에 변경사항(1)이 생겼다면, 반드시 새로운 설계도를 생성(2)하고, 이를 DB에 반영(3)해야 한다.

  1. model class 변경 -> 2. makemigrations -> 3. migrate
  • 모델 필드 (Model Field)
    : DB 테이블의 필드(열)을 정의하며, 해당 필드에 저장되는 데이터 타입과 제약조건을 정의
  1. CharField(): 길이의 제한이 있는 문자열을 넣을 때 사용 (필드의 최대 길이를 결정하는 max_length는 필수 인자)
  2. TextField(): 글자의 수가 많을 때 사용
  3. DateTimeField(): 날짜와 시간을 넣을 때 사용
    • auto_now: 데이터가 저장될 때마다 자동으로 현재 날짜 시간을 저장
    • auto_now_add: 데이터가 처음 생성될 때만 자동으로 현재 날짜시간을 저장

Admin site

  • Automatic admin interface
    : Django는 추가 설치 및 설정 없이 자동으로 관리자 인터페이스를 제공
    => 데이터 확인 및 테스트 등을 진행하는 데 매우 유용
  1. admin 계정 생성
  • email은 선택사항이기 때문에 입력하지 않고 진행 가능
  • 비밀번호 입력 시 보안상 터미널에 출력되지 않으니 무시하고 입력 이어가기
    $ python manage.py createsuperuser
  1. DB에 생성된 admin 계정 확인

  2. admin에 모델 클래스 등록

  • admin.py에 작성한 모델 클래스를 등록해야만 admin site에서 확인 가능
  1. admin site 로그인 후 등록된 모델 클래스 확인

  2. 데이터 생성, 수정, 삭제 테스트

  3. 테이블 확인

참고

  • 데이터베이스 초기화
  1. migration 파일 삭제
  2. db.sqlite3 파일 삭제

  • SQLite
    : 데이터베이스 관리 시스템 중 하나이며 Django의 기본 데이터베이스로 사용됨 (파일로 존재하며 가볍고 호환성 좋음)

  • CRUD
    : 소프트웨어가 가지는 기본적인 데이터 처리 기능
    (Create/Read/Update/Delete)

profile
멋쟁이 토마토 개발자 🍅

0개의 댓글