具有由u定义的变量输出的Flask API

2024-03-29 08:23:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用flask编写一个API。你知道吗

我希望API根据url返回表类别的列类别或列子类别中的元素。你知道吗

例如http:…/类别/子类别或者http:…/categories/类别你知道吗

我试图创建变量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)

Tags: textapijsonhttpflaskdbgettype
1条回答
网友
1楼 · 发布于 2024-03-29 08:23:47

更改类别方法如下:

@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)

相关问题 更多 >