본문 바로가기

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

[The Origin][VSCODE][Django][CRUD] Read (2)

반응형

상세보기 (더보기) 기능 구현

※ 같은 페이지에서 보이는게 아니라 상세 페이지로 이동

상세(더보기) 이동 기능추가

  - (app의 urls.py) post-detail 이라는 이름으로 지정

def post_detail_view(request, id):
    post_detail = post.objects.get(id=id)
    context = {
        'post' : post_detail
    }
    return render(request, 'posts/post_detail.html', context)

  - detail_view로 이동된 후에 list 내용과 유사하게 detail의 내용도 보여지게 기능 추가

  - list와 다르게 한개만 보여주면 되기때문에 for 반복문은 필요 없음

  - 더보기 글씨 click시 이동 (a Tag 활용)

  - 클릭한 게시글(post.id)의 상세 내용으로 이동

  - /post/{{post.id}} 로 이동이 가능하지만 url을 통해서 효율적으로 변경

상세보기 (더보기) 로 이동

※ 이동 후에는 안보여야 하는 기능들이 몇개 있다.

변수를 활용한 조건 만들기 (변수 = detail)

  - (templates/mixin/posts/post_card.html)

  - post_detail.html

  - index.html (index에서는 detail이 보여야하기 때문에)

조건에 따른 내용 변경 (본문 내용 더보기, 댓글내용 더보기)

  - post_card.html 중간 부분 (content)

        <div class="card_content">
            <span class="card__like-num">좋아요 00개</span>
            <div class="card__main-text">
                <p><span class="card__user-name">{{ post.writer }}</span>
                {% if not detail %}
                    {{ post.content|truncatechars:35 }}
                {% else %}
                    {{post.content}}
                {% endif %}
                </p>

                {% if not detail %}
                    <a href="{% url 'posts:post-detail' post.id %}">더보기</a>
                {% endif %}

            </div>
            <div>
                <p class="">댓글 {{ post.comment_set.all.count }}개 
                    {% if not detail %}
                        <a href="{% url 'posts:post-detail' post.id %}">모두보기</a>
                    {% endif %}
                </p>
                <ul class="card__comment-group">
                    {% if not detail %}
                        {% for comment in post.comment_set.all|slice:":2" %}
                        <li>
                            <p><span class="card__user-name">{{ comment.writer }}</span>{{ comment.content }}</p>
                        </li>
                        {% endfor %}
                    {% else %}
                        {% for comment in post.comment_set.all %}
                        <li>
                            <p><span class="card__user-name">{{ comment.writer }}</span>{{ comment.content }}</p>
                        </li>
                        {% endfor %}
                    {% endif %}

                </ul>
            </div>

Error 처리

강제로 특정 게시물로 이동

  - id를 임의로 입력 → (페이지 없을때에는 Error 발생) → Main Page (index)로 이동

  - try ~ except (페이지 존재하지않음) : index로 이동되게끔 Error 처리

 

반응형