1. Django - 검색기능 구현
bootstrap 에서 navbar 를 가져와서 사용함으로 navbar 안에 있는 search 에다가 title(제목)을 입력하면 해당 title에 맞는 author text . . . 등을 가져오게 설정해보자.
base.html
<form class="form-inline my-2 my-md-0" method="get" action="{% url 'search' %}">
<input class="form-control" type="text" placeholder="Search" aria-label="Search" name="b" value="{{b}}">
</form>

-
form method = "get" : url 창에 본인이 입력한 결과를 보이게 하면서 데이터를 가져온다는 뜻(?) {% csrf_token %}을 추가해주면 자세한 값들이 암호화(?) 되어 보여지게 된다.
-
action="% url 'search' %}%" : 해당 form 이 작동되게 하면 urls.py 안에 name 이 search인 것을 찾아가라
border/urls.py
path('border/search/', views.border_search, name='search'),
-
input value="{{b}}" 입력한 값은 b 객체(?) 에 저장시켜라 [ 여기서 만들어준 b 객체는 view 에서 사용된다 ]
border/views.py
def border_search(request):
br = Border.objects.all() # 모든 Border 테이블의 모든 object들을 br에 저장하라
b = request.GET.get('b','') # GET request의 인자중에 b 값이 있으면 가져오고, 없으면 빈 문자열 넣기
if b: # b에 값이 들어있으면 true
br = br.filter(title__icontains=b) # 의 title이 contains br의 title에 포함되어 있으면 br에 저장
return render(request, 'border/border_search.html', { 'border_search':br , 'b':b})
# br에는 Border 테이블에 title 이름이 'Singapore'인 데이터들이 들어있고,
# b에는 내가 처음에 입력했던 'Singapore'가 들어있다.
border/border_search.html
{% extends 'base.html'%}
{% block title %}
<title>Search</title>
{% endblock %}
{% block container %}
<center><h1>border</h1></center>
<div class="bordertable">
<table class="table table-striped">
<thead>
<tr>
<th scope="col"></th>
<th scope="col">id</th>
<th scope="col">title</th>
<th scope="col">author</th>
<th scope="col">text</th>
<th scope="col">photo</th>
</tr>
</thead>
{% for post in border_search %}
<tr>
<th scope="row"></th>
<td>{{forloop.counter }}</td>
<td><a href="">{{post.title}}</a></td>
<td>{{post.author}}</td>
<td>{{post.text}}</td>
<td>{{post.photo}}</td>
<td>{{post.number}}</td>
{{post.b}}
</tr>
{% endfor %}
<h1>당신이 입력한 검색어는 {{b.title}}</h1>
</tbody>
</table>
</div>
{% endblock %}

참고url : https://wayhome25.github.io/django/2017/05/04/django-queryset-search/
Queryset을 활용한 아주 간단한 필터검색 구현 · 초보몽키의 개발공부로그
AskDjango 수업을 듣고 중요한 내용을 정리하였습니다....
wayhome25.github.io
'Web > Django' 카테고리의 다른 글
Django - Form(함수형,클래스형) (PyCon Korea) (0) | 2019.08.09 |
---|---|
Django - models.imageField, FileFieild url 응용 (0) | 2019.08.09 |
Django - static 파일지정 (0) | 2019.08.05 |
Django - Pagination (클래스형 뷰) (0) | 2019.08.05 |
Django - Pagination (0) | 2019.08.02 |
댓글