无法在烧瓶中为REST API返回json分页

SO0*_*112 3 python rest pagination json flask

我正在与Miguel Grinberg的Flask REST API存储库配合使用,但无法返回JSON分页的结果。在线示例使用html模板,但我只想返回多个结果(20),并最终返回上一页和下一页的链接。当我紧接此语句返回代码时,出现“分页对象不可迭代”的信息:

def get_customers():
    return jsonify({'customers': [customer.get_url() for customer in
                                  Customer.query.paginate(page=1, per_page=1)]})
Run Code Online (Sandbox Code Playgroud)

我知道我传递了错误的对象,但是我不确定是否应该使用其他模块,或者使用的是正确的路径。有没有人建议实现我的最终目标?

Miguel回购中的原始代码是:

@app.route('/customers/', methods=['GET'])
def get_customers():
    return jsonify({'customers': [customer.get_url() for customer in
                                  Customer.query.all()]})
Run Code Online (Sandbox Code Playgroud)

整个文件在这里:https : //github.com/miguelgrinberg/oreilly-flask-apis-video/blob/a460ad9df2e58c13b90f183e81b4e8953eb186cb/orders/api.py

我正在使用的相关代码:

class Customer(db.Model):
    __tablename__ = 'customers'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), index=True)

    def get_url(self):
        return url_for('get_customer', id=self.id, _external=True)

    def export_data(self):
        return {
            'self_url': self.get_url(),
            'name': self.name
        }

    def import_data(self, data):
        try:
            self.name = data['name']
        except KeyError as e:
            raise ValidationError('Invalid customer: missing ' + e.args[0])
        return self


@app.route('/customers/', methods=['GET'])
def get_customers():
    return jsonify({'customers': [customer.get_url() for customer in
                                  Customer.query.paginate(page=1, per_page=1)]})

@app.route('/customers/<int:id>', methods=['GET'])
def get_customer(id):
    return jsonify(Customer.query.get_or_404(id).export_data())
Run Code Online (Sandbox Code Playgroud)

jfo*_*kes 6

请参阅API文档

如果要遍历分页对象,请使用(例如)

 Customer.query.paginate(page=1, per_page=1).items
Run Code Online (Sandbox Code Playgroud)

这是该页面的项目的集合。