django 003 | database & model

8465 단어 djangodjango

Django와 데이터베이스

  • django는 ORM(Object Relation Map)을 지원해줌으로써 데이터 베이스 다루게 해줌
  • 데이터베이스 :
    => MYSQL에 데이터들이 저장이 된다

=> 위와 같은 테이블 형태로 저장이 된다
=> CLASS를 이용해 위와 같은 데이터베이스를 이용할 수 있다

  • CLASS : 정보형식을 저장하는 틀 (붕어빵 틀)

  • 객체 : 틀의 안에 달라지는 형식들
    ==> 위에서 테이블안의 친구들은 모두 같은 붕어빵 틀로 찍어낸 친구지만 붕어빵 속은 다 제각각이듯이 내용이 달라지는 것이 가능

  • 위와 같이 지정한 클래스를 아래 (1), (2)와 같이 상황에 따라서 템플릿을 배치해 내가 원하는 형식대로 보일 수 있게 작업하는 것이 가능하다

(1)

(2)

Model 실습

  1. 가상환경 생성
  2. 가상환경 실행
  3. django install
  4. 프로젝트 생성
django-admin startproject project
  1. 앱 생성
python manage.py startapp blog
  1. settings에서 앱추가
 'blog',
  1. 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()와 같이 여기의 괄호 안에 들어가는 필드 옵션들도 매우 다양, 그때그때 검색해 사용

  1. model 만들었으면 이주 시켜줘야함
python manage.py makemigrations

=> makemigrations : 앱 내의 migration 폴더를 만들어서 models.py 변경사항 저장

python manage.py migrate

=> migration 폴더를 실행시켜 데이터베이스를 사용

  • 이렇게 migrate 마친 아이들은 장고의 admin 페이지에서 확인 가능하다
  1. urls.py에 들어가면 admin url 있음
urlpatterns = [
    path('admin/', admin.site.urls),
]
  • python manage.py runserver 한 다음에

뒤에 /admin 추가해주고 들어가면 관리자 페이지 나옴

http://127.0.0.1:8000/admin

이를 관리하기 위해 super user 만들어줘야함

  1. superuser 만들기
python manage.py createsuperuser


=> 아이디 만들고 이메일은 안써도 됨
=> 비번은 쳐도 안보임

  1. 이후 관리자 계정에서 우리가 만든 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)" 이라는 아이로 등록이 된다

이렇게 나오는 것이 불편하니

  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에서 보이게 된다

좋은 웹페이지 즐겨찾기