【问题标题】:Error returning flask endpoint json/status code返回烧瓶端点 json/状态码时出错
【发布时间】:2020-06-18 05:50:00
【问题描述】:

如果请求成功,我有一个可以正常工作的端点,否则会使代码崩溃(不是预期的行为)

class CarbyID(Resource):
    def get(self, car_id):
        json_return = {'car_id': car_id}
        try:
            res = db_query.read(car_id) #gets the data from the databse
            json_return['data'] = res
            return json_return, 200 if res else json_return, 400
        except:
            return json_return,505

当在数据库中找到 car_id 时 --> OK.

当找不到 car_id 时, res 为 None 并期望返回 400,但返回 500 并出现以下错误:

  File "\Lib\site-packages\werkzeug\datastructures.py", line 1091, in extend
    for key, value in iterable:
ValueError: too many values to unpack (expected 2)

知道为什么吗?是同一个结构的json+状态码。

【问题讨论】:

    标签: python flask werkzeug


    【解决方案1】:
    In [5]: def test(): 
       ...:     return 1,2 if False else 3,4 
    
    In [6]: test()                                                                  
    Out[6]: (1, 3, 4)
    
    
    In [7]: def test(): 
       ...:     return (1,2) if False else (3,4) 
    In [8]: test()                                                                  
    Out[8]: (3, 4)
    
    

    所以,像这样改变你的代码

    class CarbyID(Resource):
        def get(self, car_id):
            json_return = {'car_id': car_id}
            try:
                res = db_query.read(car_id) #gets the data from the databse
                json_return['data'] = res
                return (json_return, 200) if res else (json_return, 400)
            except:
                return json_return,505
    
    

    【讨论】:

      【解决方案2】:

      好的,所以:

      def hola():
          condition = True
          return 'True',"A" if condition else 'False','B'
      

      返回“真”、“A”、“B”。

      我希望返回 'True','A'。

      正确的是

      def hola():
          condition = True
          return ('True',"A") if condition else ('False','B')
      

      【讨论】:

        猜你喜欢
        • 2011-12-11
        • 2022-10-18
        • 2020-04-01
        • 2019-09-11
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        • 2019-05-27
        • 2021-02-22
        相关资源
        最近更新 更多