[파이썬] Flask에서의 페이지네이션

페이지네이션은 웹 개발에서 매우 중요한 기능 중 하나입니다. Flask 프레임워크를 사용하여 페이지네이션을 구현하는 방법을 알아보겠습니다.

Flask란?

Flask는 파이썬으로 작성된 마이크로 웹 프레임워크입니다. 간결하고 가볍기 때문에 많은 개발자들이 선호하며, 확장성도 높습니다. Flask는 페이지네이션을 구현하기에도 적합한 프레임워크입니다.

페이지네이션 기능 구현하기

Flask에서 페이지네이션을 구현하기 위해서는 다음과 같은 단계를 따를 수 있습니다.

  1. 필요한 의존성 설치하기
    Flask에서 페이지네이션을 구현하기 위해 Flask-Paginate 패키지를 설치해야 합니다. 아래의 명령을 사용하여 패키지를 설치합니다.

    pip install Flask-Paginate
    
  2. Flask-Paginate 설정하기
    Flask-Paginate를 사용하기 위해 Flask 애플리케이션에 다음과 같이 설정을 추가해야 합니다.

    from flask_paginate import Pagination, get_page_parameter
    
    app.config['PER_PAGE'] = 10
    
  3. 데이터베이스에서 페이지네이션 구현하기
    Flask-Paginate를 사용하여 데이터베이스에서 페이지네이션을 구현하려면 다음과 같은 코드를 사용할 수 있습니다.

    from flask_paginate import Pagination, get_page_parameter
    
    @app.route('/')
    def index():
        page = request.args.get(get_page_parameter(), type=int, default=1)
        per_page = app.config['PER_PAGE']
        total = len(data)  # 총 데이터 개수
        pagination = Pagination(page=page, per_page=per_page, total=total, record_name='data')
        offset = (page - 1) * per_page
        data_subset = data[offset:offset + per_page]
        return render_template('index.html', data=data_subset, pagination=pagination)
    

    위의 예시 코드에서 data는 페이지네이션을 적용할 데이터 리스트입니다.

  4. 템플릿에서 페이지네이션 구현하기
    페이지네이션을 위한 템플릿 파일(index.html)에서는 다음과 같이 페이지 링크를 생성할 수 있습니다.

       
    <div class="pagination">
        {% if pagination.has_prev %}
            <a href="{{ url_for('index', page=pagination.prev_page) }}">Previous</a>
        {% endif %}
        {% for page_num in pagination.iter_pages() %}
            {% if page_num %}
                {% if page_num == pagination.page %}
                    <span class="current-page">{{ page_num }}</span>
                {% else %}
                    <a href="{{ url_for('index', page=page_num) }}">{{ page_num }}</a>
                {% endif %}
            {% else %}
                <span class="ellipsis">&hellip;</span>
            {% endif %}
        {% endfor %}
        {% if pagination.has_next %}
            <a href="{{ url_for('index', page=pagination.next_page) }}">Next</a>
        {% endif %}
    </div>
       
    

    위의 코드는 페이징된 페이지 번호 리스트를 생성하고, 이전/다음 버튼을 링크로 연결합니다. 페이지 번호를 클릭하면 해당 페이지로 이동합니다.

결론

Flask를 사용하여 페이지네이션을 간단하게 구현할 수 있습니다. Flask-Paginate 패키지는 효율적인 페이지네이션을 제공하며, 편리한 템플릿 작성을 도와줍니다. 페이지네이션은 사용자 경험을 향상시키고 대량의 데이터를 처리할 때 유용합니다. Flask를 통해 웹 애플리케이션을 개발하면서 페이지네이션을 구현하는 방법을 익혀보세요.