我正在使用flask编写一个API。
我希望API根据url返回表类别的列类别或列子类别中的元素。
例如http:/类别/子类别或http:/类别/类别
我试图创建变量category_type
并将其分配给输出d,但它不起作用。
class Categories(db.Model):
__tablename__ = 'categories'
category = db.Column(db.Text)
subcategory = db.Column(db.Text, primary_key = True)
@app.route('/categories/<string:category_type>', methods=['GET'])
def categories(category_type):
if request.method == 'GET':
results = Categories.query.all()
json_results = []
for result in results:
d = {'Category': result.category_type}
json_results.append(d)
return jsonify(items=json_results)
更改类别的方法如下所示:
@app.route('/categories/<string:category_type>', methods=['GET'])
def categories(category_type):
if category_type.lower() not in ('category', 'subcagory'):
flask.abort(404)
if request.method == 'GET':
results = Categories.query.all()
json_results = []
for result in results:
d = {'Category': getattr(result, category_type.lower())}
json_results.append(d)
return jsonify(items=json_results)
更新:如果要删除重复项,请将json_results
变量类型更改为set
,如下所示:
@app.route('/categories/<string:category_type>', methods=['GET'])
def categories(category_type):
if category_type.lower() not in ('category', 'subcagory'):
flask.abort(404)
if request.method == 'GET':
results = Categories.query.all()
json_results = set()
for result in results:
d = {'Category': getattr(result, category_type.lower())}
json_results.add(d)
return jsonify(items=json_results)