变量在运行时被视为NoneType,但日志记录显示正确的值

时间:2016-07-26 00:19:02

标签: python flask

我有一个烧瓶路线,我将JSON数据发布到。通过此函数将请求转换为python词典。

def request_handler(request_data):

    try:
        data = json.loads(request_data)
    except ValueError:
        return jsonres("error", "bad json")

    return data

我遇到麻烦的路线如下:

@mod_api.route('/thing/create', methods=['POST'])
@api_token_required
def create_thing():
    if request.method == 'POST':

        data = request_handler(request.data)

在所有其他路线中,我可以从键中获取值,并使用data.get('key-name')无需麻烦地使用它们。虽然在这个特定的路由上我得到错误,因为数据的值被认为是NoneType。虽然如果我记录数据变量中的值,输入或任何其他信息,它会在日志记录中显示它。

logging.debug(type(data))会产生<dict>
logging.debug(data.get('starttime')会产生123123(编号,但会显示我正在寻找的纪元整数)

starttime = data.get('starttime') + 1

结果

  

Python错误:+:'int'和'NoneType'不支持的操作数类型

记录将正确显示有关数据中键值的所有信息。只要我尝试对该值执行任何操作,它就会将其视为NoneType,从而导致服务器错误。

这条线路上的各种密钥和类型的所有数据都会发生这种情况。

1 个答案:

答案 0 :(得分:0)

尝试:

data = request.get_json( force=True, silent=True )