2017-11-10 8 views
2

私はMiguel GrinbergのFlask REST APIリポジトリと連携しており、JSONページング結果を返すことに失敗しています。例ではhtmlテンプレートをオンラインで使用していますが、いくつかの結果(20)を返すだけで、最終的に前のページと次のページのリンクが返されます。私はすぐにこの文の次のコードを返すとき、私は取得「ページネーションオブジェクトが反復可能ではありません」:は、REST APIのフラスコでjsonページネーションを返すことができません

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

私は私が間違ったオブジェクトを渡している理解し、私は別のモジュールを使用する必要がある場合、私はわからないんだけど、または私が正しい道にいるかどうか。誰も私の最終目標に達するための提案を持っていますか?

ミゲルのレポで元のコードは次のとおりです。

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

ファイル全体がここにある:私が働いている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()) 

答えて

3

the API docsを参照してください。

あなたはそのページのアイテムのコレクションがある

Customer.query.paginate(page=1, per_page=1).items 

、ページネーションオブジェクトを反復処理(たとえば)を使用したい場合。

+0

と同様に、ページ分割オブジェクトのJSON表現を使用しますか? 「手動で」行う必要があると思われます。あなたが望むJSONを生成するためにページネーションオブジェクトを渡す関数を記述してください。または、その動作を持つページネーションのスーパークラスを実装します。 – jfowkes

関連する問題