Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用flask从url获取多个参数_Python_Flask_Sqlalchemy - Fatal编程技术网

Python 使用flask从url获取多个参数

Python 使用flask从url获取多个参数,python,flask,sqlalchemy,Python,Flask,Sqlalchemy,我正在尝试使用flask在mysql数据库之上构建RESTAPI。 在上面的程序中,我试图从url获取商店和类别。即使我使用request.args.get,Store值也是空的,即json_结果是空的。如果我硬编码制作PLAY_Store.query.filter_by(Store=“PLAY Store”)我得到了预期的输出。但是当我键入127.0.0.1/app api?Store=“PLAY Store”json_结果是空的 我还有一个问题。如何在筛选条件中设置多个条件,例如PLAY\u

我正在尝试使用flask在mysql数据库之上构建RESTAPI。 在上面的程序中,我试图从url获取商店和类别。即使我使用
request.args.get
,Store值也是空的,即json_结果是空的。如果我硬编码制作
PLAY_Store.query.filter_by(Store=“PLAY Store”)
我得到了预期的输出。但是当我键入
127.0.0.1/app api?Store=“PLAY Store”
json_结果是空的


我还有一个问题。如何在筛选条件中设置多个条件,例如
PLAY\u STORE.query.filter\u by(STORE=“PLAY STORE”和Category=“Games”)
问题在于获取url参数

请尝试以下url:

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)
您不需要在querystring值中发送单引号,即

  127.0.0.1:5000/app-api?store=Play Store&category=Games
/?store=XXXXXX与此不同/?store='XXXXXX'

另外,
filter\u by
用于简单查询,如果您想使用复杂查询并获取更多信息,首先,您不应该在URL中放置空格。“%大多数情况下使用20'代替空格(可以看出,stackoverflow使用了hypens'-')。因此,请尝试127.0.0.1/app api?store=“Play%20Store”
filter\u by
accepts
**kwargs
。因此,您可以用逗号分隔键值对,例如,
PLAY\u STORE.query.filter\u by(STORE=“PLAY STORE”,Category=“Games”)
。请避免在变量名称中使用大写字母,并阅读感谢!!PLAY_STORE.query.filter_by(STORE=“PLAY STORE”,Category=“games”)正在工作PLAY%20Store不工作什么是“STORE”值???,可以添加此
打印请求.args.get('STORE')
,并共享该值
 <your-host>/?store=XXXXXX not like this <your-host>/?store='XXXXXX'