최신글
hyeonga_code
파이선 웹구축_장고_29_검색 필터 유지 본문
반응형
- 필터 유지
1. 검색 후, 다음 페이지도 검색 내용 유지되어 나오는지 확인 <templates> > <board> > 'index.html'
'index.html'
=====
1
2
3
4
5
6
7
8
9
|
<form>
<select name="cate">
<option value='sub' {% if cate == "sub" %} selected {% endif %}>Title</option>
<option value='wri' {% if cate == "wri" %} selected {% endif %}>Writer</option>
<option value='con' {% if cate == "con" %} selected {% endif %}>Content</option>
</select>
<input type="text" name='kw' value="{{kw}}">
<button>Search</button>
</form>
|
cs |
>> 실행 시, 다음 페이지 클릭 시, 페이지 정보만 넘기고 있기 때문에 검색과 다른 전체 데이터 페이지로 넘어간다
>> 모든 버튼 수정해야 함 "&cate={{cate}}&kw={{kw}}"
2. 버튼 기능 수정 <templates> > <board> > 'index.html'
'index.html'
=====
1
2
3
|
<a href="{% url 'index' %}&cate={{cate}}&kw={{kw}}"><button>Home</button></a>
<a href="{% url 'index' %}?page={{ bset.next_page_number}}&cate={{cate}}&kw={{kw}}"><button>Next</button></a>
|
cs |
- 리셋버튼
<a href="{% url 'index' %}"><button type='button'>Reset</button></a>
- 데이터 없을 경우 보여지는 값
=====
1
2
3
4
5
|
{% empty %}
<tr>
<th colspan="5"> {% if kw %} NO RESULT{% else %}NO DATA {% endif %}</th>
</tr>
{% endfor %}
|
cs |
= 데이터 정렬 기능
- b = b.order_by('subject')
#_ 역방향은 - 붙여서 작성
<board> > '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
25
26
|
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()
b = b.order_by('subject')
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 |
3. 페이지 정리 <templates> > <board> > 'index.html'
'index.html'
=====
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
{% load mathfilters %}
<h1><b>SH BOARD</b></h1>
<table border="1">
<tr>
<th>NO</th>
<th>SUBJECT</th>
<th>WRITER</th>
<th>DETAIL</th>
<th>DELETE</th>
</tr>
{% for i in bset %}
<tr>
<td>{{ bset.start_index|add:forloop.counter}}</td>
<td>{{ i.subject }}</td>
<td>{{ i.writer }}</td>
<td><a href="{% url 'detail' i.id %}"><button>상세보기</button></a></td>
<td><a href="{% url 'delete' i.id %}"><button>삭제하기</button></a></td>
<!--
<td>{{ forloop.counter }}</td>
<td>{{ i.subject }}</td>
<td>{{ i.writer }}</td>
<td><a href="{% url 'detail' i.id %}"><button>상세보기</button></a></td>
<td><a href="{% url 'delete' i.id %}"><button>삭제하기</button></a></td>
-->
</tr>
{% empty %}
<tr>
<th colspan="5"> {% if kw %} NO RESULT{% else %}NO DATA {% endif %}</th>
</tr>
{% endfor %}
</table>
{{bset.number}} page<br>
{% if bset.has_previous %}
<a href="{% url 'index' %}&cate={{cate}}&kw={{kw}}"><button>Home</button></a>
<a href="{% url 'index' %}?page={{ bset.previous_page_number}}&cate={{cate}}&kw={{kw}}"><button>Back</button></a>
{% else %}
<button disabled>Home</button>
<button disabled>Back</button>
{% endif %}
{% for i in bset.paginator.page_range %}
{% if bset.number|add:4 >= i and i >= bset.number|sub:3%}
<a href="{% url 'index' %}?page={{i}}&cate={{cate}}&kw={{kw}}"><button {% if best.number == i %} disabled {% endif %}> {{i}} </button></a>
{% endif %}
{% endfor %}<br>
{% if bset.has_next %}
<a href="{% url 'index' %}&cate={{cate}}&kw={{kw}}"><button>Home</button></a>
<a href="{% url 'index' %}?page={{ bset.next_page_number}}&cate={{cate}}&kw={{kw}}"><button>Next</button></a>
{% else %}
<button disabled>Home</button>
<button disabled>Next</button>
{% endif %}
<br>
<form>
<select name="cate">
<option value='sub' {% if cate == "sub" %} selected {% endif %}>Title</option>
<option value='wri' {% if cate == "wri" %} selected {% endif %}>Writer</option>
<option value='con' {% if cate == "con" %} selected {% endif %}>Content</option>
</select>
<input type="text" name='kw' value="{{kw}}">
<button>Search</button>
<a href="{% url 'index' %}"><button type='button'>Reset</button></a>
</form>
|
cs |
반응형
'Python_Django' 카테고리의 다른 글
파이선 웹구축_장고_30_번역 기능 googletrans (0) | 2023.06.22 |
---|---|
파이선 웹구축_장고_기초02_Import (0) | 2023.06.21 |
파이선 웹구축_장고_기초01_Path 함수 (0) | 2023.06.20 |
파이선 웹구축_장고_28_검색 필터 설정 (0) | 2023.06.20 |
파이선 웹구축_장고_27_검색 옵션 설정 (0) | 2023.06.19 |