Pagination (feat. Python)

GisangLee·2022년 5월 26일
0

my_module

목록 보기
18/33
post-custom-banner

Pagination ( limit, offset ) with python

  • view
class TestView(APIView):

	def get(self, request):
    	
    	page = int(request.GET.get("page", 1))
        page_size = 10
        
		limit = page_size * page
        offset = limit - page_size
        
        # 데이터 수	
        nubmer_of_data = len(data)

		# 페이지에 맞는 데이터 뽑아오기
		paged_data = data[offset:limit]

		# 페이지 숫자
		page_count = ceil(number_of_data / page_size)

		if page_count < 1:
			page_count = 1

		context = {
			"data": paged_data,
			"page": page,
			"page_count": page_count,
			"page_range": range(1, page_count + 1),
		}

		return render(request, "test.html", context=context)
  • template
{% if page|slugify != "1" %}
	<li class="pagination-prev">
      <a href="?page={{ page|add:-1 }}">이전</a>
	</li>
{% endif %}

{% for page in page_range %}
    <li>
      <a href="?page={{ page }}">{{ page }}</a>
	</li>
{% endfor %}

{% if page|slugify != page_count|slugify %}
    <li class="pagination-next">
      <a href="?page={{ page|add:1 }}">다음</a>
	</li>
{% endif %}
profile
포폴 및 이력서 : https://gisanglee.github.io/web-porfolio/
post-custom-banner

0개의 댓글