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
- model class 변경 -> 2. makemigrations -> 3. migrate
- 모델 필드 (Model Field)
: DB 테이블의 필드(열)을 정의하며, 해당 필드에 저장되는 데이터 타입과 제약조건을 정의
- CharField(): 길이의 제한이 있는 문자열을 넣을 때 사용 (필드의 최대 길이를 결정하는 max_length는 필수 인자)
- TextField(): 글자의 수가 많을 때 사용
- DateTimeField(): 날짜와 시간을 넣을 때 사용
- auto_now: 데이터가 저장될 때마다 자동으로 현재 날짜 시간을 저장
- auto_now_add: 데이터가 처음 생성될 때만 자동으로 현재 날짜시간을 저장
Admin site
- Automatic admin interface
: Django는 추가 설치 및 설정 없이 자동으로 관리자 인터페이스를 제공
=> 데이터 확인 및 테스트 등을 진행하는 데 매우 유용
- admin 계정 생성
- email은 선택사항이기 때문에 입력하지 않고 진행 가능
- 비밀번호 입력 시 보안상 터미널에 출력되지 않으니 무시하고 입력 이어가기
$ python manage.py createsuperuser
-
DB에 생성된 admin 계정 확인

-
admin에 모델 클래스 등록
- admin.py에 작성한 모델 클래스를 등록해야만 admin site에서 확인 가능

-
admin site 로그인 후 등록된 모델 클래스 확인

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

-
테이블 확인

참고
- migration 파일 삭제
- db.sqlite3 파일 삭제
