Model

1. Model 클래스 생성

Django 에서 Model은 단순하게 데이터만 저장하는 역할을 하는게 아니라, DB에 저장하거나 읽어오는 기능도 같이 수행한다. 각 App에서 처리할 data를 Model의 field로 정의한다.

기본적으로 기능 포함하고 있기 떄문에 django에서 제공하는 Model을 상속받아 작성한다.

 

class Article(models.Model):

title = models.CharField(max_length= 10)
content = models.TextField()

def __str__(self):
  return self.title

Article이라는 모델을 생성하여 title, content라는 속성을 추가하였다.

 

 

 

 

2. 각 application/admin.py에 Model 추가하기

admin.site.register(Article)

 

 

 

3. migration

Model을 생성했다면, Model의 내용을 DB에 적용하기 위해서 migration을 수행한다.

 

 

python manage.py makemigrations
python manage.py migrate

 

 

3. Model Instance를 만들어 DB에 데이터 추가

데이터를 추가하기 위해서는 shell이나 shell_plus를 이용할 수 있다.

 

shell_plus

python manage.py shell_plus

shell_plus 실행한다.

 

 

In [1]: article = Article()

In [2]: article.title='글 제목 예시'

In [3]: article.content='글 내용 예시'

In [4]: article.save()

Article model 객체의 article 인스턴스를 생성하고, title과 content 속성을 채워준 뒤 저장하였다.

 

 

Article.objects.all()

.objects.all()으로 객체의 모든 인스턴스를 확인하여 데이터가 정상적으로 추가 된것을 볼 수 있다.

 

 

 

sqlite

sqlite3
sqlite> .open db.sqlite3

.open으로 데이터베이스를 열어준다.

 

 

sqlite> select * from articles_article;

모든 데이터를 조회한다.

 

 

sqlite에서는 sql문으로 데이터를 추가, 수정, 삭제, 조회 할 수 있다.

 

 

 

 

4. CRUD 처리 위한 articles.urls.py 작성하기

app_name = 'articles'
urlpatterns = [
path('new/',views.new,name='new'),  # 새 글 작성 화면 보여줘
   path('create/',views.create,name='create'),  # 새 글 작성 저장 해줘
   path('<int:pk>/detail/',views.detail, name='detail'),  # 상세 화면 보기
   path('<int:pk>/edit/',views.edit, name='edit'),  # 수정 화면 보여줘
   path('<int:pk>/update/',views.update, name='update'),  # 수정 해줘
   path('<int:pk>/delete/',views.delete, name='delete'),  # 삭제해줘
]

app_name을 설정해줘야 url태그, name을 이용할 수 있다.

path에 각각의 링크와 views의 함수를 작성한다.

 

 

 

 

 

CRUD

Create :  DB에 데이터를 생성함

Read : DB에서 데이터를 읽어옴

Update : DB의 특정 데이터를 수정함

Delete : DB의 특정 데이터를 삭제함

 

 

1. CREATE

# 클래스 통한 인스턴스 생성
article = Article()



# 인스턴스 변수에 값 할당

article.title = ‘’
article.content = ‘’



# Save 해야 DB에 값이 저장됨
article.save()

 

2. READ

# 전체 데이터 조회
Article.objects.all()



# 단일 데이터 조회, pk같이 고유성 보장하는 조회에서 사용해야 함
Article.objects.get(pk=?)



# 지정된 조회 매개 변수와 일치하는 객체 포함하는 queryset 반환
Article.objects.get(content=‘’)

 

 

3. UPDATE

# 수정하고자 하는 article 인스턴스 객체 조회 후 반환 값 저장
Article.objects.get(pk=?)



# 인스턴스 변수 변경
article.title = ‘’



# 저장
article.save()



# 변경된 값 확인
article.title

 

 

4. DELETE

# 수정하고자 하는 article 인스턴스 객체 조회 후 반환 값 저장
Article.objects.get(pk=?)



# 메서드 호출
articles.delete()

 

 

 

 

Admin Site 활용하기

 

admin.site.register(Article)
admin.site.register(Comment)

관리자 사이트에서 관리할 수 있도록 admin.py에 등록해주어야한다.

admin.site.register(클래스)

 

 

관리자 계정생성

python manage.py createsuperuser

 

admin/에서 확인 가능하다.