54. 서브메뉴 만들기 - 이전/다음 기능

54.1. django get_previous_by_필드명() - model.py

get_previous_by_필드명()으로 사용할 수 있습니다.

위 그림은 regist_dt를 기준으로 이전 글 제목(self.title)과 이후 글을 제목을
가져오는 기능을 합니다.

수정일 기준으로 할려면 get_previous_by_update_dt()로 만드시면 됩니다.

54.2. 페이지 정보담기 - view.py

PyBlog query_set을 context에 pageInfo로 추가했습니다.

54.3. 서브메뉴/이전/다음글 적용 - blogDetail.html

view에서 context에서 pageInfo를 담아놓았습니다.

pageInfo로 model에 정의한 get_next, get_previous로 타이틀을 표시하고
get_absolute_url로 a 태그의 링크를 추가했습니다.

이제 확인해보겠습니다.

 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
 <div class="col-lg-4 mb-4">
        <div id="right_menu" class="col-xl-3 col-md-6 mb-4">
            <div class="card border-left-info shadow h-100 py-2">
                <div class="card-body">                    
                    <!--<div class="h5 mb-0 font-weight-bold text-gray-800 text-center">{{title_nm}}</div> -->
                    <div class="row no-gutters align-items-center">
                        <div class="col">
                            {% if pageInfo.get_previous %}
                                <div> 
                                    <span class="h6 mb-1 font-weight-bold text-gray-800">
                                        <a href="{{pageInfo.get_previous.get_absolute_url}}">{{pageInfo.get_previous}}</a>
                                    </span>
                                </div>
                            {% endif %}
                            <hr class="d-none d-md-block">

                            <div> <span class="h6 mb-1 font-weight-bold text-gray-800"><a href="#{{title_nm}}">{{title_nm}}</a></span></div>
                            {% for list in dataList %}   
                                <div> 
                                    <span class="h6 mb-1 font-weight-bold text-gray-800">
                                        <a href="#{{list.pb_detail__sub_title}}">{{list.pb_detail__sub_title}}</a>
                                    </span>
                                </div>
                            {% endfor %}

                            <hr class="d-none d-md-block">
                            {% if pageInfo.get_next %}
                                <div> 
                                    <span class="h6 mb-1 font-weight-bold text-gray-800">
                                        <a href="{{pageInfo.get_next.get_absolute_url}}">{{pageInfo.get_next}}</a>
                                    </span>
                                </div>
                            {% endif %}
                        </div><!--<div class="col mr-2">-->                        
                    </div>
                </div>
            </div>
        </div>
     </div>
{% endblock %}

54.4. 브라우저에서 서브메뉴/이전/다음글 확인하기

메뉴와 이전/ 다음이 잘 표시됩니다.

눌러보니 이동도 잘되는군요^__^