hyeonga_code

파이선 웹구축_장고_28_검색 필터 설정 본문

Python_Django

파이선 웹구축_장고_28_검색 필터 설정

hyeonga 2023. 6. 20. 05:59
반응형

- 필터 설정

1. 함수 설정 <board> > 'views.py'

'views.py'

=====

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def index(request):
    cate = request.GET.get('cate','')
    kw = request.GET.get('kw','')
    
    if kw:
        if cate == 'sub':
            b = Board.objects.filter(subject=kw)
        elif cate == 'wri':
            b = Board.objects.filter(writer=kw)
        elif cate == 'con':
            b = Board.objects.filter(content=kw)
    else:
        b = Board.objects.all()        
    
    pg = request.GET.get('page',1)
    pag = Paginator(b,10)
    obj = pag.get_page(pg)
    print(cate, kw)
    context = {
        "bset": obj
    }
    return render(request, "board/index.html", context)
 
cs

>> 일부 포함 단어 검색

- ooo__startswith : 시작하는 내용

- ooo__contains : 포함된 내용

 

=====

1
2
3
4
5
6
7
8
9
     if kw:
          if cate == 'sub':
               b = Board.objects.filter(subject__startswith=kw)
          elif cate == 'wri':
               b = Board.objects.filter(writer=kw)
          elif cate == 'con':
               b = Board.objects.filter(content__contains=kw)
          else:
          b = Board.objects.all() 
cs

>> 인자 값 페이지로 넘겨주어야 함

 

 

 

최종 'views.py'

=====

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def index(request):
    cate = request.GET.get('cate','')
    kw = request.GET.get('kw','')
    
    if kw:
        if cate == 'sub':
            b = Board.objects.filter(subject__startswith=kw)
        elif cate == 'wri':
            b = Board.objects.filter(writer=kw)
        elif cate == 'con':
            b = Board.objects.filter(content__contains=kw)
    else:
        b = Board.objects.all()        
    
    pg = request.GET.get('page',1)
    pag = Paginator(b,10)
    obj = pag.get_page(pg)
    print(cate, kw)
    context = {
        "bset": obj,
        'cate' : cate,
        'kw' : kw
    }
    return render(request, "board/index.html", context)
cs

2. 카테고리 설정 <templates> > <board> > 'index.html'

'index.html'

=====

1
2
3
4
5
6
7
8
9
<form>
    <select name="cate">
        <option value='sub'>Title</option>
        <option value='wri'>Writer</option>
        <option value='con'>Content</option>
    </select>
    <input type="text" name='kw' value="{{kw}}">
    <button>Search</button>
</form>
cs

 

반응형