본문 바로가기
Python Django/Django 블로그 만들기

[Django 블로그 만들기] Django Model, View 만들기

by 베타코드 2022. 9. 6.
반응형

안녕하세요 독학코딩입니다. 이전 포스팅에서 Django 앱을 만들고 urls.py를 수정하는 것까지 했습니다. 이번 포스팅에서는 Django에 Model과 View를 생성하는 법에 대해서 배워보겠습니다. 이전 포스트에 대해서 궁금하시다면 아래의 링크에서 확인 가능합니다.

 

[Django 블로그 만들기] Django 앱 만들기

안녕하세요 이전 포스팅에서 Django 설치와 프로젝트 생성에 대해서 배웠습니다. 이번 포스팅에서는 Django 앱을 생성하고 본격적으로 블로그를 만들도록 하겠습니다. 이전 포스트에 대해서 궁금

stcodelab.com

 

Django Post model 만들기

blog/model.py 파일에 들어가서 모델을 생성할 단계입니다. 

class Post(models.Model):

이라고 작성하시면 됩니다. 블로그 글을 작성하는데 필요한 것들이 무엇이 잇을까요? 제목, 글, 사진, 생성날짜, 생성자 등이 있지 않을까요? 

from django.db import models
from django.contrib.auth.models import User

class Post(models.Model):
    title = models.CharField(max_length=50) ## 글 제목
    image = models.ImageField(blank=True)
    content = models.TextField() ## 글 내용
    author = models.ForeignKey(User, on_delete=models.CASCADE) ## 작성자
    created_date = models.DateTimeField(auto_now_add=True)  #

하나씩 설명해드리겠습니다. title, image, content, author, created_date 같은 경우는 제가 임의로 생성한 이름입니다. 원하시는데로 작성하시면 됩니다. 

 

위에서 title과 content에 사용된 models.CharFieldmodels.TextField같은 경우는 텍스트를 작성하실 수 있는 필드입니다. 다른 점이라면 CharFieldTextField와 다르게 max_length를 필수로 갖습니다. 

 

image에서 blank=True는 이미지가 있어도, 없어도 괜찮다는 의미입니다.

 

author에서는 특이하게 필드가 아닌 ForeignKey를 사용하는데 ForeignKey는 Django 에서 이미 생성된 model를 가져와 사용하는 것입니다. 그래서 인자로 User를 받는데 from django.contrib.auth.models import User를 통해서 import 합니다. on_delete=models.CASCADEUser가 삭제 되었을 때 Post를 어떻게 할 것인지 설정하는 내용으로 필수 인자입니다.

 

on_delete에는 CASCADE, DO_NOTHING, PROTECT, RESTRICT 등 여러가지 조건이 있지만 보통 CASCADE를 사용하고 CASCADE 는 User가 삭제되면 POST를 삭제하겠다는 의미입니다.

 

created_date는 DateTimeField를 사용하고 그 안에 auto_now_add=True는 Post가 작성될 때 자동으로 시간을 현재의 시작을 저장한다는 의미입니다.

 

Django views Post List 만들기

이제 views 파일에 Post_List를 만들 차례입니다. 아주 쉽습니다. blog/views.py 파일에 들어가셔서 

from django.shortcuts import render
from .models import Post
from django.views.generic import ListView

class Post_List(ListView):
    model = Post

위와 같이만 작성하시면 됩니다. Post_List는 model로 아까 만들었던 Post를 사용하겠다는 의미입니다. 향후에 더 많은 것들이 추가될 것이지만 지금은 이렇게만 하시면 됩니다. 

 

Django admin Post 추가하기

이제 Post를 만드는데 필요한 작업은 모두 하셨습니다. 그렇게 어떻게 만들어야 될까요? 그건 admin.py파일에 Post를 추가함으로서 가능합니다. blog/admin.py 파일에 가셔서 아래와 같이 작성해주시면 됩니다. 

from django.contrib import admin
from .models import Post

admin.site.register(Post)

다 작성하셨다면 admin 사이트로 가볼까요.

그럼 위와 같이 BLOG 앱 내에 Posts 항목이 추가된게 보이실 겁니다. 혹시 Posts를 눌러보셨나요?? 인터넷 창에 이상한 오류가 나오죠? 그건 우리가 model을 생성하고 migrate 하지 않아서 그렇습니다. Anaconda prompt에서 아래를 실행하시고 다시 runserver해주시기 바랍니다.

python manage.py makemigrations
python manage.py migrate

다시 Posts를 눌러보시면 위와같은 화면이 나오고 ADD POST + 를 눌러보시면 아래와 같이 포스트를 생성하실 수 있으시겁니다. 

 

오늘은 Django에서 Post모델을 만들고 Post모델뷰를 만들고 Post를 생성하는 방법까지 알아봤습니다. 다음 포스팅에서는 생성한 포스트를 내 블로그에 실제 보이게 하는 방법에 대해서 배워보겟습니다.

반응형

댓글