각종 모델 필드에 대하여
이제 테이블을 작성할 순서입니다.
블로그 앱에서 필요한 앱은 일단 Post뿐입니다.
그럼 Post에 필요한 필드들을 생각해보겠습니다.
- 제목(title)
- 간단한 설명(description)
- Post의 내용(content)
- url에 필요한 슬러그(slug)
- Post 작성날짜(create_date)
- Post 수정날짜(modify_date)
slug에 대해서만 간단히 설명하겠습니다.
블로그(https://ex_blog.com)를 만든 후,
‘how to play teemo’라는 제목의 Post를 작성했다고 가정하겠습니다.
그럼 저 Post가 나오는 페이지의 url은 어떻게 되야할까요?
정의하기 나름이지만, url에 저 제목이 포함돼 있으면
url만 보고도 무슨 포스트일지 알 수 있고,
검색엔진도 더 빨리 페이지를 찾아주고, 검색 정확도가 높아집니다.
그런데 url에는 space, 쉼표, 마침표 등이 들어갈 수 없습니다.
그래서 사용하는게 slug인데, 예를 들면 ‘how to play teemo’의 slug는
‘how-to-play-teemo’가 되서 아래와 같이 url에 사용될 수 있습니다.
https://ex_blog.com/post/how-to-play-teemo
그럼 테이블을 작성하도록 하겠습니다.
blog/models.py
대부분의 설명은 코드안에 있습니다.
get_absolute_url함수안에서 쓰인 blog라는 namespace와
post_detail라는 name은 나중에 urls.py 작업 때 정의할 것입니다.
get_absolute_url, get_previous_post, get_next_post 메소드도 다음 챕터에서
사용하도록 하겠습니다.
다음으로 admin페이지에서 Post테이블을 관리할 수 있도록,
admin.py에 Post 테이블을 등록해줍니다.
blog/admin.py
이제 Post 테이블을 새로 생성했으므로, migration 해줍니다.
이제 로컬서버를 켜고 admin페이지에 들어가서 작성한 Post테이블이
잘 나오는지 확인해봅니다.
localhost:8000/admin
설정한대로 검색바가 생겼고, modify_date로 필터링 기능이 생긴 걸 확인할 수 있습니다.
ADD POST+를 눌러 포스트 하나를 작성해보겠습니다.
verbose_name, help_text 등이 설정한대로 잘 나오는 걸 볼 수 있습니다.
TITLE에 뭔가를 써보면 Slug가 자동으로 채워지는 걸 볼 수 있습니다.
저는 다음 챕터를 위해 아래와 같이 5개의 Post 객체를 생성했습니다.