2017-08-16 238 views
1

你好我想添加一个新的键值对,但我收到 类型错误的错误一成不变的Python:“ImmutableMultiDict”对象是不可改变的我想变添加新密钥来自request.form但我无法添加新的密钥值。任何想法如何实现这一目标?类型错误:“ImmutableMultiDict”对象

这里是我的代码我的控制器

@benefits_api.route("/templates", methods=["POST"]) 
def store(): 

    parameters = request.form 
    response = BenefitTemplateService.create(parameters) 

    return jsonify(response), response['code'] 

上和我的服务就是这样的

class BenefitTemplateService(object): 

    @staticmethod 
    def create(params): 
     # some validation here 

     params['credit_behavior'] = "none" 
     return params 

但我的赋值下面credit_behavior得到一个错误的错误消息

enter image description here

+3

试着改造'ImmutableMultiDict'到'dict'。然后修改它。 – stamaimer

+0

是的,我试过了,它的工作原理。我只是不确定为什么我不能直接修改request.form来添加一个新值。也许它的一个对象,而不是一个字典 –

+0

异常信息说'request.form'是一个'ImmutableMultiDict'。不可变意味着它不能像'tuple'那样修改。 – stamaimer

回答

1

您可以使用bu iltin to_dict()方法ImmutableMultiDict,这将为您提供一个字典,您可以自由修改。

例如,你可以做如下改变了代码:

@benefits_api.route("/templates", methods=["POST"]) 
def store(): 

    parameters = request.form.to_dict() 
    response = BenefitTemplateService.create(parameters) 

    return jsonify(response), response['code'] 
相关问题