django 003 | database & model
Django와 데이터베이스
- django는 ORM(Object Relation Map)을 지원해줌으로써 데이터 베이스 다루게 해줌
- 데이터베이스 :
=> MYSQL에 데이터들이 저장이 된다
=> 위와 같은 테이블 형태로 저장이 된다
=> CLASS를 이용해 위와 같은 데이터베이스를 이용할 수 있다
-
CLASS : 정보형식을 저장하는 틀 (붕어빵 틀)
-
객체 : 틀의 안에 달라지는 형식들
==> 위에서 테이블안의 친구들은 모두 같은 붕어빵 틀로 찍어낸 친구지만 붕어빵 속은 다 제각각이듯이 내용이 달라지는 것이 가능
-
위와 같이 지정한 클래스를 아래 (1), (2)와 같이 상황에 따라서 템플릿을 배치해 내가 원하는 형식대로 보일 수 있게 작업하는 것이 가능하다
(1)
(2)
Model 실습
- 가상환경 생성
- 가상환경 실행
- django install
- 프로젝트 생성
django-admin startproject project
- 앱 생성
python manage.py startapp blog
- settings에서 앱추가
'blog',
- models에 방금 만든 앱의 이름을 딴 클래스 지정
class blog(models.Model) : #model을 상속받는다는 거
title=models.CharField(max_length=200) #Charfield는 제한이 있는 문자열
writer = models.CharField(max_length=100)
pub_date=models.DateTimeField()
body=models.TextField()
-
이때 모델에서 상속받을 수 있는 field들은 매우 다양
-
또한 Charfield()와 같이 여기의 괄호 안에 들어가는 필드 옵션들도 매우 다양, 그때그때 검색해 사용
- model 만들었으면 이주 시켜줘야함
python manage.py makemigrations
=> makemigrations : 앱 내의 migration 폴더를 만들어서 models.py 변경사항 저장
python manage.py migrate
=> migration 폴더를 실행시켜 데이터베이스를 사용
- 이렇게 migrate 마친 아이들은 장고의 admin 페이지에서 확인 가능하다
- urls.py에 들어가면 admin url 있음
urlpatterns = [
path('admin/', admin.site.urls),
]
- python manage.py runserver 한 다음에
뒤에 /admin 추가해주고 들어가면 관리자 페이지 나옴
http://127.0.0.1:8000/admin
이를 관리하기 위해 super user 만들어줘야함
- superuser 만들기
python manage.py createsuperuser
=> 아이디 만들고 이메일은 안써도 됨
=> 비번은 쳐도 안보임
- 이후 관리자 계정에서 우리가 만든 blog 모듈 확인하려면 admin page에서 등록해줘야함
(1) from .models import blog
=> 모델로부터 우리가 만든 블로그 앱 데려와
(2) admin.site.register(blog)
=> 그리고 사이트에 블로그라는 아이 등록시켜!
from django.contrib import admin
from .models import blog
# Register your models here.
admin.site.register(blog)
이렇게 등록시키면 원래는 이런 화면에서
블로그 기능이 추가된 아이로 변경된다
그리고 블로그 안에서 글을 하나 올리려고 보면 우리가 model에서 지정해준 형식으로 있음
이 상태에서 글을 등록하면
"blog object(1)" 이라는 아이로 등록이 된다
이렇게 나오는 것이 불편하니
- model에 추가 작업 (메소드 하나 더 overriding)
def __str__(self):
return self.title
=> 이 객체가 호출이 된다면 자신의 title로 이름을 내달아라~라는 메소드 추가
class blog(models.Model) : #model을 상속받는다는 거
title=models.CharField(max_length=200) #Charfield는 제한이 있는 문자열
writer = models.CharField(max_length=100)
pub_date=models.DateTimeField()
body=models.TextField()
def __str__(self):
return self.title
이후 새로고침을 하고 아까 작성한 글을 다시 보면
제목이 아까 title로 설정한 친구로 admin page에서 보이게 된다
Author And Source
이 문제에 관하여(django 003 | database & model), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@myway00/django-003-model저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)