조여정@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
복사
•
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() 사용
필드 타입
필드 옵션
그때그때 구글링
◦
Create model Blog 출력 확인
◦
python manage.py migrate 터미널에 적으면 변경사항들. migrations 폴더를 뒤져서 db.sqlite3 이라고 하는 데이터 베이스에 적용, OK인 모든 파일 확인
< 명 령 어 >
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 입력해서 들어가면
이 창이 뜨지만 데이터베이스는 뜨지 않음
→ 등록 안해서
from .models import Blog
admin.site.register(Blog)
추가하면
이렇게 창이 바뀜
Blog 에 들어가서 ADD BLOG 해서 아무거나 하나 쓰면 목록에 Blog object (1) 이라고 되어있는데 이를 바꿔보자
def __str__(self):
return self.title
Python
복사
str 이라는 것은 클래스를 만들 때 기본적으로 주는 애 ...(Blog object (1) 를 줌
→ 어디선가 객체를 호출했을 때 나오는 이름(이름표)
self.title 로 method 가 호출되었을 때 글의 제목(title)이 보이도록 함
이거 뭐야 왜 안없어져
self.title 로 method 가 호출되었을 때 글의 제목(title)이 보이도록 함