본문 바로가기

학습/[The-Origin][SW][Backend] Main Pag

[The Origin][VSCODE][Django][CRUD] Read

반응형

데이터베이스 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일" )

 

반응형