홈>
Comment
의 처음 5 개의 주석을 렌더링하고 싶습니다
queryset. 하지만 사용자가 버튼을 클릭하면 다음 20 개의 댓글을로드 할 수 있기를 원합니다.
조회수
def article(request, category, id):
name = resolve(request.path).kwargs['category']
instance = get_object_or_404(Post, id=id, entered_category=name)
#comments
current_page = int(request.GET.get('page_val', '1'))
page_size = 5
limit = page_size * current_page
offset = limit - page_size
new_comments_list = Comment.objects.filter(destination=id, parent_id=0).order_by('-timestamp')[offset:limit]
counts = new_comments_list.count()
total_pages = counts / page_size
if counts % page_size != 0:
total_pages += 1
is_last = True if current_page >= total_pages else False
comment_list = Comment.objects.filter(parent_id=0, post=post).order_by('-score__upvotes')[:2]
context = {
'id': id,
'comment_list': new_comments_list,
'is_last': is_last,
'instance': instance,
}
if request.is_ajax():
if new_comments_list:
return render(request, 'list_ajax.html', context)
else:
return HttpResponse('last')
return render(request, 'article.html', context)
comments_base.html
<div class="commentsContainer">
{% include 'comments.html' %}
#I can append the new comments here
<p class="more_comments">more comments</p>
</div>
comments.html
{% block comments %}
{% for i in comment_list %}
{% if i.parent_comment %}
<div class="comment_shell hasParent">
{% else %}
<div>
{% endif %}
<div class='comment_div' data-comment_id="{{ i.id }}">
<div class="left_comment_div">
<div class="username_and_votes">
<h3><a class='username_foreign'>{{ i.user }}</a></h3>
{% for j in i.score.all %}
<span class="upvotes">{{ j.upvotes }}</span>
<span class="downvotes">{{ j.downvotes }}</span>
{% endfor %}
</div>
<br>
<p>{{ i.comment_text }}</p>
</div>
</div>
{% include 'comments.html' with comment_list=i.replies.all %}
</div>
{% endfor %}
{% endblock %}
내 의견에서 볼 수 있듯이 처음 5 개의 의견 만받습니다. 이렇게하면 (AJAX를 통해) 다음 20 개의 쿼리 세트 항목을로드 할 수있는 방법이 있습니까? 또는 처음에 전체 쿼리 세트를로드해야하지만 처음 5 개만 표시해야합니까 (jquery를 통해 나머지는 숨기십시오)? 그런 다음 jquery를 통해 다음 20 개의 주석을로드 하시겠습니까? 아니면 실행 가능하지 않습니까? 추천 감사합니다.
수정 : 전체 코드를 추가했습니다.
- 답변 # 1
- 답변 # 2
기사에 대한 의견을 반환하는 새로운보기 기능을 만든 다음 django-el-pagination 앱을 사용하여 모든 것이 효과가있는 것을 추천합니다.
관련 자료
- PHP MYsql | 숫자가 더 낮은 처음 4 개 항목을 선택하세요
- java - RecyclerView가 목록의 처음 세 항목을 복제합니다
- python - 열거 형을 사용하지 않고 for 루프의 첫 x 항목에 다른 특정 항목 추가
- 아이템 렌더링 | 네이티브 반응
- css - 첫 번째 및 마지막 그리드 항목 전후 공간 추가
- go - 처음 n 개 항목을 삭제하지만 마지막 n 개 항목을 삭제하지 않으면 슬라이스 용량이 변경되는 이유는 무엇입니까?
- html - 서로 중앙에 정렬되고 맨 위에 정렬 된 처음 2 개의 Flex 항목 표시
- android - GridLayoutManager를 사용하여 3 개의 스팬 카운트를 처음으로 RecyclerView에 10 개 이상의 항목로드
- java - 첫 번째 JFrame의 요소를 빠르게 렌더링하는 코드가 있습니까?
- javascript - 요소 목록에서 검색된 항목 만 렌더링하는 방법
- javascript - forEach 루프를 통해 Map () 항목을 React jsx로 렌더링하려면 어떻게해야합니까?
- office ui fabric - 모든 항목이 미리 선택된 DetailsList 구성 요소 렌더링
- javascript - 업데이트 된 항목 만 배열로 렌더링
- python - 목록에서 다음 항목의 처음 두 문자를 기준으로 목록의 항목을 병합하는 방법
- javascript - JS에서 피보나치 시퀀스를 만들 때 배열의 처음 두 항목을 가져올 수 없습니다
- python 3.x - 두 개의 결합 된 반복기에서 처음 N 개 항목을 가져 오나요?
- java - 스피너의 처음 두 항목 만 표시하는 내 목록
- 어떻게 PHP에서 배열에서 관련 항목의 제 1 서브 세트를 얻으려면?
관련 질문
- javascript : ajax 요청을 사용하여 페이지를 다시로드하지 않고 views.py에서 친구 요청을 보내는 방법
- javascript : ajax가 wordpress에서 400 잘못된 요청 오류를 보내는 중입니다.
- php : 클릭 입력 유형 날짜이지만 var $ (# date) .value가 비어 있습니다.
- javascript : select2 상자에서 모달 상자를 열 수 있습니까?
- python : "Multipart form parse error-Invalid boundary in multipart : None"Django 및 AJAX
- CORS 문제로 인해 URL을 적중 할 수 없음-JQuery
- javascript : jquery ajax가 정의되지 않았습니다.
- javascript : PHP에서 Ajax 성공 후 이미지 파일 미리보기를 재설정하는 방법은 무엇입니까?
- javascript : jQuery에서 ajax를 통해 다차원 체크 박스 배열 보내기
- javascript : codeigniter에서 ajax를 사용하여 Bar Highchart에 데이터를 전달하는 방법은 무엇입니까?
목표를 달성하기 위해 커스텀 페이지 매김 로직을 수행해야합니다. 먼저 페이지 매김 로직을 수행하고 페이지 값에 대한 오프셋과 한계를 만듭니다.이 로직의 기능은 django의 내장 메소드를 사용하여 ajax를 통해 데이터를 추가하는 동일한 기능을 사용하는 것입니다. strong>request.is_ajax ()
템플릿에서 의견을 추가 할 수있는 div를 정의하십시오. article.html
comments.html파일
jquery 로직을 수행하여 데이터를 추가하십시오. yourfilename.js