国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

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

2020-02-16 01:53:10
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

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

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

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

from datetime import datetimeclass 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_templatefrom flask.views import MethodViewclass 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 %}            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大同县| 济南市| 双牌县| 禹州市| 萝北县| 沾益县| 榕江县| 莲花县| 北海市| 缙云县| 温州市| 古丈县| 绥棱县| 英吉沙县| 虞城县| 榆树市| 宁化县| 浏阳市| 云霄县| 饶阳县| 宁化县| 巴东县| 加查县| 辽阳市| 万宁市| 遵义市| 阳原县| 望都县| 锡林浩特市| 大同市| 富阳市| 伊宁市| 新晃| 保定市| 滁州市| 五台县| 旬阳县| 竹溪县| 汶川县| 玉溪市| 和田市|