[점프투 장고] 댓글 페이징기능 추가 관련질문

답변에 페이징 기능을 추가하기 위해서 다음과 같이 소스코드를 수정하였는데 , 페이지 항목은 보이지만 한페이지당 7개가 보이는것이 아닌 전부가 그대로 보여지며 기능이 동작하지않습니다. 뭐가 문제인 건가요?
코드는 점프투 장고에 있는 것(3-14)에서 그대로 수정한 것입니다.

mysite/pybo/views/base_views.py
'''
from django.core.paginator import Paginator
from django.shortcuts import render, get_object_or_404
from django.db.models import Q
from pybo.models import Question
from pybo.models import Answer

def index(request):
page = request.GET.get('page', '1') # 페이지
kw = request.GET.get('kw','') # 검색어
question_list = Question.objects.order_by('-create_date')
if kw:
question_list = question_list.filter(
Q(subject__icontains=kw) | # 제목 검색
Q(content__icontains=kw) | # 내용 검색
Q(answer__content__icontains=kw) | # 답변 내용 검색
Q(author__username__icontains=kw) | # 질문 글쓴이 검색
Q(answer__author__username__icontains=kw) # 답변 글쓴이 검색
).distinct()
paginator = Paginator(question_list, 10) # 페이지당 10개씩 보여주기
page_obj = paginator.get_page(page)
context = {'question_list': page_obj, 'page': page, 'kw': kw}
return render(request, 'pybo/question_list.html', context)

def detail(request, question_id):
page = request.GET.get('page', '1') # 페이지\
answer_list = Answer.objects.order_by('-create_date')
question = get_object_or_404(Question, pk=question_id)
paginator = Paginator(answer_list, 7) # 페이지당 7개씩 보여주기
page_obj = paginator.get_page(page)
context = {'answer_list': page_obj, 'page': page, 'question': question}
return render(request, 'pybo/question_detail.html', context)

'''

mysite/templates/pybo/question_detail.html
'''
{% extends 'base.html' %}
{% block content %}
{% load pybo_filter %}



{% if messages %}

{% endif %}

{{ question.subject }}





{{ question.content|mark }}


{% if question.modify_date %}

modified at

{{ question.modify_date }}


{% endif %}

{{ question.author.username }}

{{ question.create_date }}




추천
{{question.voter.count}}

{% if request.user == question.author %}
수정
삭제
{% endif %}




{{question.answer_set.count}}개의 답변이 있습니다.

{% for answer in question.answer_set.all %}




{{ answer.content|mark }}


{% if answer.modify_date %}

modified at

{{ answer.modify_date }}


{% endif %}

{{ answer.author.username }}

{{ answer.create_date }}




추천
{{answer.voter.count}}

{% if request.user == answer.author %}
수정
삭제
{% endif %}



{% endfor %}




  • 처음

        <!-- 이전페이지 -->
        {% if answer_list.has_previous %}
        <li class="page-item">
            <a class="page-link" data-page="{{ answer_list.previous_page_number }}"
               href="javascript:void(0)">이전</a>
        </li>
        {% else %}
        <li class="page-item disabled">
            <a class="page-link" tabindex="-1" aria-disabled="true"
               href="javascript:void(0)">이전</a>
        </li>
        {% endif %}
        <!-- 페이지리스트 -->
        {% for page_number in answer_list.paginator.page_range %}
        {% if page_number >= answer_list.number|add:-2 and page_number <= answer_list.number|add:2 %}
        {% if page_number == answer_list.number %}
        <li class="page-item active" aria-current="page">
            <a class="page-link" data-page="{{ page_number }}"
               href="javascript:void(0)">{{ page_number }}</a>
        </li>
        {% else %}
        <li class="page-item">
            <a class="page-link" data-page="{{ page_number }}"
               href="javascript:void(0)">{{ page_number }}</a>
        </li>
        {% endif %}
        {% endif %}
        {% endfor %}
        <!-- 다음페이지 -->
        {% if answer_list.has_next %}
        <li class="page-item">
            <a class="page-link" data-page="{{ answer_list.next_page_number }}"
               href="javascript:void(0)">다음</a>
        </li>
        {% else %}
        <li class="page-item disabled">
            <a class="page-link" tabindex="-1" aria-disabled="true"
               href="javascript:void(0)">다음</a>
        </li>
        {% endif %}
        <!--마지막페이지-->
        <li class="page-item">
            <a class="page-link" href="?page={{ question_list.paginator.count }}">끝</a>
        </li>
    </ul>
    <!-- 답변 페이징처리 끝 -->
    
    <form action="{% url 'pybo:answer_create' question.id %}" method="post" class="my-3">
        {% csrf_token %}
        {% include "form_errors.html" %}
        <div class="mb-3">
            <label for="content" class="form-label">답변내용</label>
            <textarea {% if not user.is_authenticated %}disabled{% endif %}
                      name="content" id="content" class="form-control" rows="10"></textarea>
        </div>
        <input type="submit" value="답변등록" class="btn btn-primary">
    </form>
    


{% endblock %}
{% block script %}

{% endblock %}
'''

flavonoid37 281

2023년 5월 23일 9:54 오후

소스코드를 첨부하실때에는 다음을 참고해 주세요. https://pybo.kr/pybo/question/detail/12/ - 박응용님, 2023년 5월 23일 10:30 오후 추천 , 대댓글
목록으로