[점프투 장고] 댓글 페이징기능 추가 관련질문
답변에 페이징 기능을 추가하기 위해서 다음과 같이 소스코드를 수정하였는데 , 페이지 항목은 보이지만 한페이지당 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 %}
{% for message in messages %}
{{ message.tags }}
- {{ message.message }}
{% endfor %}
{% endif %}
{{ question.subject }}
{% if question.modify_date %}
{% endif %}
{{question.answer_set.count}}개의 답변이 있습니다.
{% for answer in question.answer_set.all %}
{% if answer.modify_date %}
{% 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 님 376
2023년 5월 23일 9:54 오후