使用flask从url获取多个参数

时间:2014-04-24 07:16:21

标签: python flask sqlalchemy

import config
from flask import Flask, jsonify, request
## app and db is defined on model.py
from model import db, app, PLAY_STORE
@app.route('/app-api', methods=['GET'])
def listapp():
    if request.method == 'GET':
        store=request.args.get('store')
        category=request.args.get('category')
        results = PLAY_STORE.query.filter_by(Store=store,Category=category).all()
        json_results = []
        for result in results:
          d = {'rank': result.Rank,
           'store': result.Store,
           'category': result.Category,
           'type': result.Type,
           'title': result.Title}
          json_results.append(d)

    return jsonify(items=json_results)

if __name__ == '__main__':
    app.run(debug=True)

我正在尝试使用flask在mysql数据库之上构建一个rest api。 在上面的程序中,我试图从网址获取商店和类别。即使我使用request.args.get,Store值为空,即json_results为空。如果我硬编码PLAY_STORE.query.filter_by(Store="Play Store")我得到预期的输出。但是当我键入127.0.0.1/app-api?store="Play Store"时json_results为空。

我还有一个问题。如何在filter_by中添加多个条件,例如PLAY_STORE.query.filter_by(Store="Play Store" and Category="Games")

1 个答案:

答案 0 :(得分:1)

问题在于您的GET网址参数

试试这个网址:

  127.0.0.1:5000/app-api?store=Play Store&category=Games

您不需要在查询字符串值中发送单引号,即

 <your-host>/?store=XXXXXX not like this <your-host>/?store='XXXXXX'

此外,filter_by用于简单查询,如果您想使用filter进行复杂查询,有关详细信息,请参阅此StackOverflow question