最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python利用flask sqlalchemy實(shí)現(xiàn)分頁(yè)效果

 更新時(shí)間:2020年08月02日 14:00:13   作者:魂?duì)繅?mèng)琳  
這篇文章主要為大家詳細(xì)介紹了利用flask sqlalchemy實(shí)現(xiàn)分頁(yè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Flask-sqlalchemy是關(guān)于flask一個(gè)針對(duì)數(shù)據(jù)庫(kù)管理的。文中我們采用一個(gè)關(guān)于員工顯示例子。

首先,我們創(chuàng)建SQLALCHEMY對(duì)像db。

from flask import Flask, render_template,request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__,static_url_path='')
app.debug = True
app.secret_key = "faefasdfaf"
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///./db/personal.db' # app的配置,指定數(shù)據(jù)庫(kù)路徑
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
app.config['SQLALCHEMY_ECHO'] = True 

db = SQLAlchemy(app)

然后我們利用db創(chuàng)建員工表:

from datetime import datetime

class Employee(db.Model):
 '''員工'''
 __tablename__ = 'employee'

 id = db.Column(db.Integer, primary_key=True)
 name = db.Column(db.String(50))
 gender = db.Column(db.String)
 job = db.Column(db.String)
 birthday = db.Column(db.DateTime)
 idcard = db.Column(db.String)
 address = db.Column(db.String)
 salary = db.Column(db.String)
 release_time = db.Column(db.DateTime)

 def __init__(self, name, gender, job, birthday, idcard, address, salary, release_time=None):
  self.name = name
  self.gender = gender
  self.job = job
  self.birthday = birthday
  self.idcard = idcard
  self.address = address
  self.salary = salary
  self.release_time = release_time if release_time else datetime.now()

 def __repr__(self):
  return '<員工{},{},{},{}>'.format(self.id, self.name, self.salary, self.address)

表創(chuàng)建好之后,我們可以從表中查詢數(shù)據(jù)了。

from flask import render_template
from flask.views import MethodView
class EmployeeListView(MethodView): # 獲取員工信息
 def get(self,page=1):
  employees = Employee.query.paginate(page,per_page=10)
  return render_template('employeelist.html', employees=employees)

以上我們通過(guò)查詢,查詢出員工信息,然后傳給前臺(tái)一個(gè)模板。(以上我們采用了flask的藍(lán)圖進(jìn)行了分模塊,假設(shè)我們把上面這個(gè)定義為視圖函數(shù)為:employee.list)

注:paginate是分頁(yè)的方法,第一個(gè)參數(shù)是頁(yè)碼,第二個(gè)是每頁(yè)顯示多少條。但是這樣得到的結(jié)果不是一列表,需要在傳到前臺(tái)的值加一個(gè) .items,下面舉例說(shuō)明。(利用jinja2模板)

 {% for item in employees.items %}

如上所示,在利用Jinja2去取值時(shí),需要在后臺(tái)傳過(guò)來(lái)的值后面,加上.items。

繼續(xù)上面的分頁(yè),這里我們要再次利用jinja2模板來(lái)定義一個(gè)方法,以實(shí)現(xiàn)分頁(yè)的功能,這個(gè)頁(yè)面名字就叫:helper.html。

{% macro render_page_data(page_data,page_function) %}
 <div class="text-center">
  <ul class="page_data">
   <li><a href="{{ url_for(page_function,page = 1) }}">首頁(yè)</a></li>
   {% if page_data.has_prev %}
    <li><a href="{{ url_for(page_function,page = page_data.prev_num) }}">«</a></li>
   {% endif %}
   {% for page in page_data.iter_pages() %}
    {% if page %}
     {% if page !=page_data.page %}
      <li><a href="{{ url_for(page_function,page = page) }}">{{ page }}</a></li>
     {% else %}
      <li class="active"><a href="#">{{ page }}</a></li>
     {% endif %}
    {% endif %}
   {% endfor %}
   {% if page_data.has_next %}
    <li><a href="{{ url_for(page_function,page = page_data.next_num) }}">»</a></li>
   {% endif %}
   <li><a href="{{ url_for(page_function,page = page_data.pages) }}">末頁(yè)</a></li>
  </ul>
 </div>
{% endmacro %}

以上是我們利用jinja2的語(yǔ)法定義了一個(gè)分布的方法,這個(gè)方法,我們傳了二個(gè)參數(shù),第一個(gè)是后臺(tái)傳過(guò)來(lái)通過(guò)db分頁(yè)查詢出來(lái)的數(shù)據(jù)。第二個(gè)是我們查詢的數(shù)據(jù)的方法。

這里需要特別說(shuō)明一下,分頁(yè)的數(shù)據(jù)有幾個(gè)重要的方法:

  • has_next:如果在目前頁(yè)后至少還有一頁(yè)的話,返回 True
  • has_prev:如果在目前頁(yè)之前至少還有一頁(yè)的話,返回 True
  • next_num:下一頁(yè)的頁(yè)面數(shù)
  • prev_num:前一頁(yè)的頁(yè)面數(shù)

通過(guò)上面的工作之后,最后就只差一步了,我們需要在我們的模板頁(yè)通過(guò)Jinja2導(dǎo)入我們剛剛定義的方法,也就是在上面我們的employeelist.html中導(dǎo)入。

{% import 'helper.html' as helper %}

導(dǎo)入之后,我們就可以在我們需要的地方調(diào)用就可以了。

{{ helper.render_pagination(employees,'employee.list') }}

上面就是我們調(diào)用我們之前定義的方法。第一個(gè)參數(shù),我們從后臺(tái)傳過(guò)來(lái)的值,第二個(gè)就是后臺(tái)的那個(gè)視圖函數(shù)。

進(jìn)行了以上操作后,我們就大功告成了,下面看一下,我們實(shí)現(xiàn)了的效果圖。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • django rest framework vue 實(shí)現(xiàn)用戶登錄詳解

    django rest framework vue 實(shí)現(xiàn)用戶登錄詳解

    這篇文章主要介紹了django rest framework vue 實(shí)現(xiàn)用戶登錄詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python自定義scrapy中間模塊避免重復(fù)采集的方法

    Python自定義scrapy中間模塊避免重復(fù)采集的方法

    這篇文章主要介紹了Python自定義scrapy中間模塊避免重復(fù)采集的方法,實(shí)例分析了Python實(shí)現(xiàn)采集的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Python實(shí)現(xiàn)合并與拆分多個(gè)PDF文檔中的指定頁(yè)

    Python實(shí)現(xiàn)合并與拆分多個(gè)PDF文檔中的指定頁(yè)

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)將多個(gè)PDF文檔中的指定頁(yè)合并生成新的PDF以及拆分PDF,感興趣的小伙伴可以參考一下
    2025-03-03
  • Python微信庫(kù):itchat的用法詳解

    Python微信庫(kù):itchat的用法詳解

    本篇文章主要介紹了Python微信庫(kù):itchat的用法詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Selenium元素定位的30種方式(史上最全)

    Selenium元素定位的30種方式(史上最全)

    這篇文章主要介紹了Selenium元素定位的30種方式,中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Python利用SSH隧道實(shí)現(xiàn)數(shù)據(jù)庫(kù)訪問(wèn)

    Python利用SSH隧道實(shí)現(xiàn)數(shù)據(jù)庫(kù)訪問(wèn)

    這篇文章主要為大家詳細(xì)介紹了如何通過(guò)sshtunnel類庫(kù)建立SSH隧道,再使用paramiko通過(guò)SSH來(lái)訪問(wèn)數(shù)據(jù)庫(kù),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-03-03
  • Flask sqlalchemy一對(duì)多與多對(duì)一與一對(duì)一及多對(duì)多關(guān)系介紹

    Flask sqlalchemy一對(duì)多與多對(duì)一與一對(duì)一及多對(duì)多關(guān)系介紹

    這篇文章主要介紹了Flask sqlalchemy一對(duì)多與多對(duì)一與一對(duì)一及多對(duì)多關(guān)系介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • 淺談python3.6的tkinter運(yùn)行問(wèn)題

    淺談python3.6的tkinter運(yùn)行問(wèn)題

    今天小編就為大家分享一篇淺談python3.6的tkinter運(yùn)行問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • 使用Python實(shí)現(xiàn)tail的示例代碼

    使用Python實(shí)現(xiàn)tail的示例代碼

    tail是一個(gè)常用的Linux命令, 它可以打印文件的后面n行數(shù)據(jù), 也能實(shí)時(shí)輸出文件的追加數(shù)據(jù)。本文就來(lái)用Python實(shí)現(xiàn)tail,感興趣的可以了解一下
    2023-03-03
  • Python使用gRPC實(shí)現(xiàn)數(shù)據(jù)分析能力的共享

    Python使用gRPC實(shí)現(xiàn)數(shù)據(jù)分析能力的共享

    gRPC是一個(gè)高性能、開(kāi)源、通用的遠(yuǎn)程過(guò)程調(diào)用(RPC)框架,由Google推出,本文主要介紹了Python如何使用gRPC實(shí)現(xiàn)數(shù)據(jù)分析能力的共享,感興趣的可以了解下
    2024-02-02

最新評(píng)論

茶陵县| 杭州市| 巨鹿县| 绥化市| 阿图什市| 遂溪县| 商洛市| 饶河县| 茌平县| 南岸区| 静乐县| 本溪市| 凉城县| 苏尼特右旗| 开平市| 尤溪县| 历史| 茂名市| 长乐市| 铅山县| 和龙市| 兰州市| 蒙城县| 财经| 铅山县| 淳化县| 江永县| 阿巴嘎旗| 阆中市| 介休市| 石棉县| 万全县| 石台县| 南溪县| 花莲市| 西峡县| 习水县| 青冈县| 玉林市| 江孜县| 河间市|