1, a função de visualização de aquisição de dados
# Obter a lista de utilizador @ pawnxc.route ( " / USER_LIST " , Métodos = [ " GET " , " POST " ]) DEF USER_LIST (): Página = request.args.get ( ' Página ' ., 1, type = int) a paginação Pawn_dl.query.order_by = (Pawn_dl.ssfj.asc ()). o paginate (Página, per_page = 20 é, error_out = False) Usuários = pagination.items # obter uma área listando FJS = PawnFj.query.order_by (PawnFj.fjdm) # Converter objeto de resultado da consulta em dados do dicionário ssfj_list = [] se fjs: para fj em fjs: ssfj_list.append (fj.to_dict ()) retorne render_template ( ' user_list.html ' , users = users, ssfj_list = ssfj_list, paginação = paginação)
Obtenha o número da página (request.args) dos parâmetros de solicitação.Se não for especificado explicitamente, a primeira página será renderizada por padrão.
O tipo de parâmetro = int garante que quando o parâmetro não puder ser convertido em um número inteiro, o valor padrão seja retornado.
Para exibir os registros em uma página, substitua all () pelo método paginate () fornecido pelo Flask-SQLAlchemy.
O número de páginas é o primeiro parâmetro do método paginate () e o único parâmetro necessário.
O parâmetro opcional per_page é usado para especificar o número de registros exibidos por página; se não especificado, 20 registros são exibidos por padrão.
Outro parâmetro opcional é error_ out, quando definido como True (o valor padrão), se o número solicitado de páginas exceder o intervalo, um erro 404 será retornado; se definido como False, uma lista vazia será retornada quando o número de páginas exceder o intervalo .
O valor de retorno do método paginate () é um objeto de classe Pagination, definido em Flask-SQLAlchemy. Este objeto contém muitos atributos que são usados para gerar links de paginação no modelo; portanto, ele é passado para o modelo como um parâmetro.
2. Modelo de paginação (flask_pagination.html):
<! - 以 Jinja2 导航 的 分页 以-> {% macro pagination_widget (paginação, ponto de extremidade)%} < ul class = "pagination" > < li > {% se não for pagination.has_prev%} {% endif %} < a href = "{% if pagination.has_prev%} {{url_for (endpoint, page = pagination.page - 1, ** kwargs)}} {% else%} # {% endif%}" > & laquo; </ a > </ li > {% para p em pagination.iter_pages ()%} {% se p%} {% se p == pagination.page%} <> < A href = "{{url_for (endpoint, página = P, ** kwargs)}}" > {{p}} </ a > </ li > {% else%} < li > < a href =" {{url_for (ponto final, página = p, ** kwargs)}} " > {{p}} </ a > </ li > {% endif%} {% else%} < li class =" disabled " > < a href = "#" > & hellip; < > {% endif%} {% endfor%} < li > {% se não for pagination.has_next%} {% endif%} < a href = "{% if pagination.has_next%} {{url_for (endpoint, page = pagination .page + 1, ** kwargs)}} {% else%} # {% endif%} " > & raquo; </ a > </ li > </ ul > {% endmacro%}
3. Introduza este modelo no arquivo HTML que precisa de paginação:
{% import "flask_pagination.html" como macros%} {% if pagination%} < div class = "pagination" > {{macros.pagination_widget (paginação, '.user_list')}} </ div > {% endif%}