<모델이란?>
저장, 처리되는 정보의 개념이며, 스키마라고도 부른다.
이러한 모델의 규칙에 따라 만드는 저장 공간을 데이터베이스라고 한다.
즉, 데이터베이스는 모델링 된 테이블들의 집합을 의미한다.
장고에서 모델을 구현하면 자동으로 데이터베이스가 생성될 수 있다.
python manage.py makemigrations
database의 엔진에 맞는 형태로 코드를 생성해준다.
migration 이란,
https://docs.djangoproject.com/en/3.2/topics/migrations/
모델의 변경 내역을 DB 스키마에 적용하는 장고의 데이터 관리 시스템이라고 한다.
하나의 마이그레이션 파일은 하나의 웹 앱에 대한 모델, 스키마를 관리한다.
python manage.py migrate
명령어를 통해 실제 DB에 변경사항을 저장한다.
기타 마이그레이션 명령어
https://tibetsandfox.tistory.com/24
<Model 클래스 선언>
title, content 의 Field를 가지고 있는 Post 클래스를 만든다.
<MTV 패턴>
일반적으로 MVC의 개념을 사용한다.
(Model, View, Controller)
MTV (Model, Template, View)를 장고에서 사용하는데,
MVC의 View가 Template의 역할을, Controller가 View의 역할을 한다.
1) Client : 특정 주소로 요청을 보낸다
2) Server : 요청을 받고, URL을 처리 -> URL에 해당하는 View를 결정
3) method가 실행되고, Render라는 메소드에서 template 파일로 넘겨진다.
<장고 모델을 활용한 데이터 생성>
from second.models import Post
post = Post.objects.create(title="this is title", content="this is content")
post.save() # 생성한 객체를 저장
posts = Post.objects.all() # 쿼리셋 생성
posts[0].title #this is title 출력
이렇게 posts는 하나의 배열처럼 다룰 수 있고, 테이블의 개념과 같다.
post = Post.objects.create(title="this is title2", content="this is content2")
이렇게 추가하면 posts 쿼리셋에 배열처럼 post 객체가 담기는 것을 알 수 있다.
<화면에 데이터 출력하기>
from . import views
from django.urls import path
urlpatterns = [
path('list/', views.list, name="list")
]
def list(request):
context = {'items' : Post.objects.all() }
return render(request, 'second/list.html', context)
저장되어 있는 쿼리셋의 정보들을
Post.objects.all() 메소드를 통해 출력할 수 있다.
'Framework > Django' 카테고리의 다른 글
MTV패턴에서 MVC패턴으로 아키텍처 변경, 기존 코드의 문제점 분석과 해결책 제시 (0) | 2021.11.04 |
---|---|
파이썬으로 장고(Django) 공략하기 : 입문 (3) Django 폼 (0) | 2021.10.24 |
파이썬으로 장고(Django) 공략하기 : 입문 (1)Django 시작하기 (0) | 2021.10.24 |
인프런 Django 초보 가이드 실습을 통해 알아보는 장고 입문 (0) | 2021.10.01 |