[점프 투 장고] 정렬기능 만들어 보기 에러
안녕하세요
쭉 잘 따라 오다가 질문 목록화면에 정렬 조건 추가하기에서
{% if so == 'recent' %} 에서 두번째 = 빨간색으로 뜨면서 ... 프론트는 만들어 지는데 실제 결과 값이 나오질 않고 그대로 최신순으로 만 보여집니다.
<div class="col-2">
<select class="form-control so">
<option value="recent" {% if so == 'recent' %}selected{% endif %}>Latest</option>
<option value="recommend" {% if so == 'recommend' %}selected{% endif %}>Like</option>
<option value="popular" {% if so == 'popular' %}selected{% endif %} >Popular</option>
</select>
</div>
<script type="text/javascript" >
$(document).ready(function(){
$(".page-link").on('click', function() {
$("#page").val($(this).data("page"));
$("#searchForm").submit()
});
$("#btn_search").on('click', function(){
$("#kw").val($(".kw").val());
$("#page").val(1);
$("#searchForm").submit();
});
$(".so").on('change', function() {
$("#so").val($(this).val());
$("#page").val(1);
$("#searchForm").submit();
});
});
{% endblock %}
def index(request):
# 입력인자
page = request.GET.get('page', '1')
kw = request.GET.get('kw','')
so = request.GET.get('so','recent')
#정렬
if so == 'recommend':
question_list = Question.objects.annotate(num_voter=Count ('voter')).order_by('-num_voter', '-create_date')
elif so == 'popular':
question_list = Question.objects.annotate(num_answer=Count('answer')).order_by('-num_answer', '-create_date')
else:
question_list= Question.objects.order_by('-create_date')
------------------------------------------------------------
question_list = Question.objects.order_by('-create_date')
if kw:
question_list = question_list.filter(
Q(subject__icontains=kw)|
Q(content__icontains=kw)|
Q(author__username__icontains=kw)|
Q(answer__author__username__icontains=kw)
).distinct()
paginator= Paginator(question_list, 10)
page_obj=paginator.get_page(page)
max_index = len(paginator.page_range)
context = {'question_list':page_obj,'max_index':max_index,'page':page, 'kw': kw,'so':so}
return render(request, 'pybo/question_list.html',context)
def detail(request, question_id):
question = get_object_or_404(Question, pk=question_id)
context = {'question': question}
return render(request, 'pybo\question_detail.html', context)
dongsoon 님 581
2022년 8월 21일 10:06 오후

2개의 답변이 있습니다. 1 / 1 Page
함수 아래
if so == 'recommend':
question_list = Question.objects.annotate(num_voter=Count ('voter')).order_by('-num_voter', '-create_date')
elif so == 'popular':
question_list = Question.objects.annotate(num_answer=Count('answer')).order_by('-num_answer', '-create_date')
else:
question_list= Question.objects.order_by('-create_date')
return HttpResponse(so)
이렇게 하고 리스트 화면 메뉴에서 인기, 추천 등 메뉴를 선택하면 주소창에
http://127.0.0.1:8000/?kw=&page=1&so=recommend 되고
화면에 recommend 등 선택한 메뉴에 단어가 표시됩니다.
dongsoon 님
2022년 8월 22일 8:12 오전