데이터베이스 list Read해서 불러오기 (감 잡기)
※ 이후에 post_card.html을 통해서 보여줄 것이기 때문에 보여주는 방식을 이해하는 용도
Test를 통한 이해
- (app의 views.py) 전체 list 불러오는 기능 추가
- (templates/post/post_list.html) data 들어가는 것 확인
- 실행 결과
List 보여지는것 꾸미기
- (templates/post/post_list.html) data를 for문으로 각 컬럼들 까지 보이게 만들기
- 실행 결과
List 내용 'filter'를 사용해서 제한하기
- (app의 views.py) 작성자(user)에 따른 내용 제한
- 관리자 로그인 후 확인 (writer에 따른 내용 보여짐)
※ query가 어떻게 날라가는지 확인하고 싶다면 'Debug Toolbar'에서 확인 가능
2022.04.21 - [공부/[SW][Backend][Pre-Origin] Main Pag] - [The Origin][VSCODE][Django] Debug Toolbar
데이터베이스 list Read 후 Data 넣어주기(형식에 맞춰서)
맞출 형식 (instagram과 비슷하게)
- (templates/index.html) main 화면 (index) 수정
for문을 사용해서 내용 반복 출력
실습준비의 mixin/posts/post_card.html 내용 있음
2022.04.21 - [공부/[SW][Backend][Pre-Origin] Main Pag] - [The Origin][VSCODE][Django][CRUD] 실습 준비
최신글 먼저 확인하기
- (app의 views.py) post.object.all() 을 만들어진 역순으로 정렬 (order_by('-created_at'))
사용자 표시 (mixin/posts/post_card.html)
- likelion.official → {{ post.writer }}
- 'post'의 model 중 글쓴사람(writer)의 이름 표시
이미지 표시 (mixin/posts/post_card.html)
<div>
{% if post.image %}
<img class="card__image" src="{{ post.image.url }}" alt="">
{% else %}
<img class="card__image" src="http://via.placeholder.com/600x600" alt="">
{% endif %}
</div>
- 모든 데이터에 사진이 있는것이 아니기때문에 조건처리를 해주지 않으면 Error 발생
(image를 찾을 수 없다는 Error)
본문 내용 표시 (mixin/posts/post_card.html)
<p><span class="card__user-name">{{ post.writer }}</span>
{{ post.content|truncatechars:35 }}
</p>
- 쓴사람(post.writer)과 내용(post.content) 표시
- |truncatechars:35 = 보여지는 글자수 제한 ( 35자_이상이면 ... 으로 표시)
댓글 갯수 표시 (mixin/posts/post_card.html)
- {{ post.comment_set.all.count }}
- 역참조 = post 입장에서는 comment 내용이 보이지 않음
(참조는 comment가 post를 했기 때문에)
- (모델명_set) = 역참조로 인해서 사용 못하는 것 해결
댓글 내용 보기 (mixin/posts/post_card.html)
- 댓글단 사람 (comment.writer), 댓글 전체 내용(comment.content) 추가
- 댓글이 한개가 아니라 여러개일 경우도 있기 때문에 for문으로 반복
{% for comment in post.comment_set.all %}
<li>
<p><span class="card__user-name">{{ comment.writer }}</span>{{ comment.content }}</p>
</li>
{% endfor %}
생성일 (mixin/posts/post_card.html)
- 작성일시 (post.created_at) 추가
- 저장되는 형식과 다르기 때문에 보여지는 형식을 지정 ( |date:"Y년 m월 d일" )
'학습 > [The-Origin][SW][Backend] Main Pag' 카테고리의 다른 글
[The Origin][VSCODE][Django][CRUD] Update (0) | 2022.04.22 |
---|---|
[The Origin][VSCODE][Django][CRUD] Read (2) (0) | 2022.04.22 |
[The Origin][VSCODE][Django][CRUD] Create (0) | 2022.04.22 |
[The Origin][VSCODE][Django][CRUD] 실습 준비 (0) | 2022.04.22 |
[The Origin][VSCODE][Django] Debug Toolbar (0) | 2022.04.22 |