Queryset을 활용한 아주 간단한 필터검색 구현

|

AskDjango 수업을 듣고 중요한 내용을 정리하였습니다.

검색을 위한 form 추가 (template)

<!-- post_list.html -->


<form action="" method="get">
  <input type="text" name="q" value="{{ q }}">
  <input type="submit" value="검색">
</form>

input text에 따른 필터링 조회처리 (view)

# blog/views.py
from django.shortcuts import render
from .models import Post

def post_list(request):
    qs = Post.objects.all()

    q = request.GET.get('q', '') # GET request의 인자중에 q 값이 있으면 가져오고, 없으면 빈 문자열 넣기
    if q: # q가 있으면
        qs = qs.filter(title__icontains=q) # 제목에 q가 포함되어 있는 레코드만 필터링

    return render(request, 'blog/post_list.html', {
        'post_list' : qs,
        'q' : q,
    })

결과화면

스크린샷 2017-05-04 오후 12.30.11