项目实训(十) —— 分页功能移植

有关“饮食记录”模块,后期主要解决了三大难点,本周三篇就分别记录解决这些难点的过程。

首先本篇是记录分页功能的实现,这一块主要是受到同类功能的同学的大力帮助,在装好东西后,移植调整便基本实现了。

首先导入关键的头文件:

from flask_sqlalchemy import SQLAlchemy

再声明一些数据库配置:

 # 数据库配置,以下是本地数据库连接法  数据库配置 mysql://username:password@hostname/database
app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://postgres:123@localhost:5432/postgres"

 # 指定当视图执行完毕后,自动提交数据库操作
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True

 # 指定每次执行操作时打印原始的SQL语句
app.config['SQLALCHEMY_ECHO'] = True

 # 【手动增加配置选项】关于使用SQLALCHEMY 出现warning 的问题解决
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
app.config['SQLALCHEMY_COMMIT_TEARDOWN'] = True

 # 创建数据库应用实例
db = SQLAlchemy(app)

然后定义映射数据库表的实体类,要求表明和列名与数据库内表保持一致,还需要标注主键:

# 食谱表的实体类
    class Food_inform(db.Model):
        # 定义表名
        __tablename__ = 'food_{0}'.format(ID)

        # 定义列
        food_id = db.Column(db.CHAR(10), primary_key=True)
        food_name = db.Column(db.CHAR(20))
        food_infor = db.Column(db.CHAR(100))
        url = db.Column(db.CHAR(100))
        time = db.Column(db.CHAR(20))

        def __init__(self, food_id, food_name, food_infor, url, time):
            self.food_id = food_id
            self.food_name = food_name
            self.food_infor = food_infor
            self.url = url
            self.time = time

        def __repr__(self):
            return '<{},{},{},{},{}>'.format(self.food_id, self.food_name, self.food_infor, self.url, self.time)

最后在def内使用,并传东西到HTML内:

page = request.args.get('page', 1, type=int)
per_page = int(request.args.get('per_page', 6))
paginate = Food_inform.query.paginate(page, per_page, error_out=False)
cuisine = paginate.items
return render_template('circle_show.html', user_data=cuisine, pagination=paginate, user_id=user_ID, user_name=user_name)

HTML利用jianjia2 for循环展现内容:

{% for meals in user_data %}
       <div class="main_part" id="part{{ loop.index }}">
              <h3>菜名:{{ meals.food_name }}</h3>
              <h3 class="limit_line">原料:{{ meals.food_infor }}</h3>
              <img class = 'pic' src= {{ meals.url }} alt="没有上传图片"/>
              <h3 id='t'>上传时间:{{ meals.time }}</h3>
              <input  class="button_inform" type="submit" value="详"
                       onclick="show_inform_{{ loop.index }}()"/>
       </div>
{% endfor %}

HTML引入分页文件,并做如下使用:

{% import "_macros.html" as macros %}


<div class="page">
        {%if pagination%}
            <div class="pagination">
                {{ macros.pagination_widget(pagination, '.food_record') }}
            </div>
        {% endif %}
</div>

最终分页效果如下:

分页流程基本就是这样,属于移植功能适当忽略原理的一个经过。

但终归来讲,能够达成目的便是成功的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值