backend/django

실전편- Blog 앱 만들기

seul chan 2017. 3. 6. 19:00


1. 애플리케이션 설계


1) UI 설계

post_all.html: 본문 제목(-> post_detail.html), Post.title, Post.modify_date, Post.description, 페이지 이동

post_detail.html: Post.title, 포스트 이동,(?), Post.modify_data, Post.content


2) 테이블 설계

id: integer/ PK, Auto Icrement, 기본 키

title: CharField(50) => 포스트 제목

slug: SlugField, Unique => 포스트 제목 별칭(??)

description: CharField(100), Blank => 포스트 내용 한줄설명

content: TextField => 포스트 내용

create_data: DateTieField: auto_now_add, 포스트 생성 날짜

modify_date: DateTimeField: auto_now => 포스트 수정 날짜


3) 로직 설계


4) URL 설계 : URL 패선 / 뷰 이름 / 템플릿 파일명

blog/ => PostLV(ListView) => post_all.html

blog/post: blog/랑 동일하게

blog/post/django-example => PostDV(DetailView) => post_detail.html

blog/archive => PostAV(ArchiveListView) => post_archive.html

blog/2017 => PostYAV(YearArchiveView) => post_archive_year.html

blog/2017/Feb => PostMAV(MonthArchiveView) => port_archive_month.html

blog/2017/Feb/20 => PostDAV(DayArchiveView) => port_archive_day.html

blog/today/ => PostTAV(TodayArchiveView) => post_archive_day.html

admin/ 


5) 작업 순서

-뼈대: startproject => settings.py => migrate => superuser => startapp => settings.py (앱 등록)

-모델 코딩: models.py => admin.py => makemigrations => migrate

-URLconf 코딩: urls.py

-뷰 코딩: views.py

-템플릿 코딩: templates 디렉토리


*템플릿 코딩 중 에러

archive 만드는 중 

ImproperlyConfigured at /admin/archive/

This query requires pytz, but it isn't installed.

에러 메세지가 발생. 그래서 pytz 패키지를 설치하였다

$pip install pytz

pytz는 python timezone 패키지로 자세한 내용은 http://www.haruair.com/blog/1759 참고하여 더 공부


*YearArchiveView 관련 object_list가 불러오지 않는 상황 => 해결

-책에는 나와있지 않지만 장고 공식 문서에서 class의 속성으로

make_object_list = True 값으로 주자 나왔다 

(https://docs.djangoproject.com/en/1.10/ref/class-based-views/generic-date-based/)


*date 표시 기호(영문)

b: mar, jan ...

j: 1, 2, 3... 30 일

Y: 2017

'b': 03, 02 등 월 표시