오늘 학습 내용
Chapter 06. [블로그] 댓글 기능 만들기
- Django에서의 Static Files
- CSS, JavaScript, 이미지 파일 등과 같은 정적 자산을 관리하는 데 사용
- 이러한 파일들은 서버 측에서 동적으로 생성되지 않으며, 클라이언트에 그대로 제공
Django Static File
STATICFILES_DIRS = [STATIC_DIR]
- 정적 파일들을 모아 관리하기 위해 만든 리스트
STATIC_ROOT = BASE_DIR / '.static_root'
- 배포 시 한 번에 배포하기 위함
- 배포환경에서 널려져 있는 스태틱 파일들을 한곳으로 모아 관리 가능하게 한 것
- 둘다 가능하지만 왼쪽은 좀더 명확하게 보이기 위함
STATIC_DIR = BASE_DIR / 'static' : 그냥 정의하기 위해 사용한 것

Bootstrap
다운로드
Bootstrap 적용하기




- blog_create.html 과 blog_update.html 을 하나로 합치기
- blog_update.html 삭제 / blog_create.html 파일명을 blog_form.html 로 변경
- cb_views.py와 views.py 의 template_name도 변경

- 위 처럼 해놓으면 FBV에서는 안나옴
- 변형
- btn_name 있으면 btn_name 출력 없으면 '저장' 텍스트 나오도록



댓글 모델 만들기

- TimestampModel 은 추상 모델 클래스(abstract model class)
- 이 클래스를 다른 모델 클래스가 상속 받아서
- created_at와 updated_at 필드를 자동으로 추가하도록 하기 위한 역할
- model이 추가되었기 때문에 사용하여 반영
- python manage.py makemigrations
- python manage.py migrate


- admin에서 댓글관리를 할 수 있도록 설정
TabularInline
- Django의 관리자(admin) 인터페이스에서 사용되는 클래스 중 하나
- 외래 키로 연결된 모델들을 한 줄씩 표 형태로 인라인(inline)으로 표시해주는 역할
- 이를 통해 관리자는 주 모델의 변경 화면에서 바로 관련된 객체들을 관리 가능
- 현재 코드에서는 블로그와 관련된 댓글을 하나의 화면에서 편리하게 관리 가능
댓글 작성

-
fields = 넣은 모델에서 어떤 부분을 수정할지
-
wigets = 안넣으면 기본값으로 들어가는데 실제 화면에 보여줄때 어떻게 나타낼지 보여줌
-
textinput = input창 생김(타입은 text)
- attrs = input안에 특정한 값을 넣고 싶을때
-
{% if request.user.is_authenticated %}
-
로그인 되어 있는지 체크
- 로그인이 되어있지 않다면 댓글을 작성할 수 없도록


- 작성은 되는데 어드민페이지에서만 작성한 댓글이 보임
if not comment_form.is_valid(): (유효성 검사 실패 시)
if not self.request.user.is_authenticated: (로그인 여부 확인)
comment = comment_form.save(commit=False)
- 댓글 객체를 데이터베이스에 저장하지 않고 반환
comment.blog_id = self.kwargs['pk']
comment.author = self.request.user
comment.save()

댓글 작성 2

상세 페이지에 댓글 페이지별로 보여주기 (페이지네이션)


새롭게 알게된 내용
- Emmet
- 특정 범위를 드래그 한 후에 tab을 누르면 들여쓰기 한칸
- shift + tab 를 누르면 안쪽으로 한칸
**
test_dic = {
'a': 1,
'b': 2,
'c': 3
}
self.test(a=test_dict['a'],b=test_dict['b'],c=test_dict['c'])
self.test(**test_dict)
test_list =[1, 2, 3]
self.test(test_list[0],test_list[1],test_list[2])
self.test(*test_list)
어려운 내용(추가 학습 필요)
- 댓글 작성 1 / 2
- 상세 페이지에 댓글 페이지별로 보여주기 (페이지네이션)
오늘 발생한 문제(발생 했다면)