📢 공지사항
home

Model 실습

번호
14
비고
14:11
주차
5월 둘째주
확인
조여정@Jnostalgia-DESKTOP-4GDFJI6 MINGW64 ~/Desktop/2021/대외 활동/9기 멋쟁 이사자처럼/3. Django/Django 실습 - Model 실습 (main) $ python -m venv myvenv 조여정@Jnostalgia-DESKTOP-4GDFJI6 MINGW64 ~/Desktop/2021/대외 활동/9기 멋쟁 이사자처럼/3. Django/Django 실습 - Model 실습 (main) $ source myvenv/Scripts/activate (myvenv) 조여정@Jnostalgia-DESKTOP-4GDFJI6 MINGW64 ~/Desktop/2021/대외 활동/9기 멋쟁 이사자처럼/3. Django/Django 실습 - Model 실습 (main) $ pip install django Collecting django Using cached Django-3.2.3-py3-none-any.whl (7.9 MB) Collecting asgiref<4,>=3.3.2 Using cached asgiref-3.3.4-py3-none-any.whl (22 kB) Collecting pytz Using cached pytz-2021.1-py2.py3-none-any.whl (510 kB) Collecting sqlparse>=0.2.2 Using cached sqlparse-0.4.1-py3-none-any.whl (42 kB) Installing collected packages: asgiref, pytz, sqlparse, django Successfully installed asgiref-3.3.4 django-3.2.3 pytz-2021.1 sqlparse-0.4.1 WARNING: You are using pip version 20.2.3; however, version 21.1.1 is available. You should consider upgrading via the 'c:\users\조여정\desktop\2021\대외 활동\제 9기 멋쟁이사자처럼\3. django\django 실습 - model 실습\myvenv\scripts\python.exe -m pip install --upgrade pip' command. (myvenv) 조여정@Jnostalgia-DESKTOP-4GDFJI6 MINGW64 ~/Desktop/2021/대외 활동/9기 멋쟁 이사자처럼/3. Django/Django 실습 - Model 실습 (main) $ django-admin startproject project2 (myvenv) 조여정@Jnostalgia-DESKTOP-4GDFJI6 MINGW64 ~/Desktop/2021/대외 활동/9기 멋쟁 이사자처럼/3. Django/Django 실습 - Model 실습 (main) $ cd project2/ (myvenv) 조여정@Jnostalgia-DESKTOP-4GDFJI6 MINGW64 ~/Desktop/2021/대외 활동/9기 멋쟁 이사자처럼/3. Django/Django 실습 - Model 실습/project2 (main) $ ls manage.py* project2/ (myvenv) 조여정@Jnostalgia-DESKTOP-4GDFJI6 MINGW64 ~/Desktop/2021/대외 활동/9기 멋쟁 이사자처럼/3. Django/Django 실습 - Model 실습/project2 (main) $ python manage.py startapp blog
Python
복사
settings.py 에서 'blog', 추가 → 앱 추가
models.py 에 클래스 만들기
class Blog(models.Model): title = models.CharField(max_length=200) writer = models.CharField(max_length=100) pub_date = models.DateTimeField() body = models.TextField()
Python
복사
클래스 이름 = 만들 테이블(데이터)의 이름
모듈 안에 있는 Model 이라는 클래스를 상속받으려고 models 적음
→ Model 클래스 안의 속성, method 그대로 사용
title 은 어떤 데이터 형식인지 정해줘야 함 → models 모듈에서 가져옴
→ 제한이 있는 문자열 CharField() 로 정해주고,
max_length 라는 속성을 넣어 200 으로 정함
writer 도 동일
pub_date 는 날짜와 시간 저장하는 DateTimeField() 사용, 모듈 동일
body(본문) 는 글자 제한 없는 TextField() 사용

필드 타입

필드 옵션

그때그때 구글링
python manage.py makemigrations 터미널에 적고
Create model Blog 출력 확인
python manage.py migrate 터미널에 적으면 변경사항들. migrations 폴더를 뒤져서 db.sqlite3 이라고 하는 데이터 베이스에 적용, OK인 모든 파일 확인
< 명 령 어 >
makemigrations : 앱 내 misgrearion 폴더를 만들어서 models.py 변경사항 저장
migrate : Migration 폴더를 실행시켜 데이터베이스에 적용
ID 는 상속받은 Model 클래스 안에 ID 값 이미 정의되어 있음
상속은 상속받을 부모 클래스에 있는 모든 method 들과 속성들을 쓸 수 있음 ... id column 을 작성하지 않아도 됨
데이터베이스 확인? : admin 패널 제공하므로 타 웹 프레임워크 보다 더 쉽게 migration 한 데이터베이스 테이블들을 확인 가능
→ 페이지 실행시켜서 주소 창에 /admin 치고 들어가면 admin 페이지 나옴
→ 이 페이지는 데이터베이스를 관리하므로 관리자 권한을 가진 슈퍼 유저만 사용할 수 있게 함 ... 슈퍼 유저 만듦
조여정@Jnostalgia-DESKTOP-4GDFJI6 MINGW64 ~/Desktop/2021/대외 활동/9기 멋쟁이사자처럼/3. Django/Django 실습 - Model 실습/project2 (main) $ python manage.py createsuperuser Username: super Email address: jyj4419@gmail.com Password: Password (again): Error: Your passwords didn't match. Password: Password (again): The password is too similar to the username. This password is too short. It must contain at least 8 characters. This password is too common. Bypass password validation and create user anyway? [y/N]: y Superuser created successfully.
Python
복사
페이지 실행해서 설정한 id 와 password 입력해서 들어가면
이 창이 뜨지만 데이터베이스는 뜨지 않음
→ 등록 안해서
—> admin.py 들어가서
from .models import Blog
admin.site.register(Blog)
추가하면
이렇게 창이 바뀜
Blog 에 들어가서 ADD BLOG 해서 아무거나 하나 쓰면 목록에 Blog object (1) 이라고 되어있는데 이를 바꿔보자
—> models.py 의 클래스에 다음과 같은 코드 작성
def __str__(self): return self.title
Python
복사
str 이라는 것은 클래스를 만들 때 기본적으로 주는 애 ...(Blog object (1) 를 줌
→ 어디선가 객체를 호출했을 때 나오는 이름(이름표)
self.title 로 method 가 호출되었을 때 글의 제목(title)이 보이도록 함
이거 뭐야 왜 안없어져
self.title 로 method 가 호출되었을 때 글의 제목(title)이 보이도록 함