带有表单发布数据的django.utils.datastructures.MultiValueDictKeyError

时间:2016-06-01 17:30:46

标签: python django

django.utils.datastructures.MultiValueDictKeyError: "'user_data'"

尝试从request.POST

访问user_data时得到的结果
post_data = dict(request.POST)
print(post_items)

返回

{'user_data[first_name]': ['Jamie'], 'user_data[name_last]': ['Lannister'], 'campus': ['McHale Hall'], 'user_data[twitter]': ['@jamielan']}

因此,如果我尝试获取user_data,我会尝试这个(不会工作)

post_data = dict(request.POST)
user_data = post_data['user_data']

我只想在此dict中获取user_data的所有实例并将其存储为json。我怎么能这样做?

预期输出会像

1 个答案:

答案 0 :(得分:1)

您的POST数据真的很奇怪,但为了正确起见,您应该这样做:

first_name = post_data["user_data[first_name]"]
name_last = post_data["user_data[name_last]"]

因为字符串user_data[first_name]是dict的键,而不仅仅是字符串user_data

修改

如果您想将用户数据转换为dict,则应循环request.POST并检查包含user_data关键字的密钥:

user_data = {}
for key, value in request.POST.iteritems():
    if 'user_data' in key:
        field = key.split('[')[1].replace(']', '')
        user_data[key] = value

# convert into json
json_user_data = json.dumps(user_data)