如何解决Django get request.POST.get() 参数没有按预期工作,参数名称带括号[]
我有一个行为非常奇怪的代码。视图接收带有键 "tags[]"
的 POST 请求,它是一个列表。我需要获取该列表,但 request.POST.get()
仅返回列表的最后一项。这是代码:
....
elif request.method == "POST":
print("REQUEST POST:")
print(request.POST)
print("---------------------------")
tags = request.POST.get("tags[]")
print("tags: %s" % tags)
print("---------------------------")
它会打印以下内容:
REQUEST POST:
<QueryDict: {'csrfmiddlewaretoken': ['PAgg9VKGosBQUn8tBBb09NdeVgE8tcAaQz2EMbkQZPiJi289hBf7MHIKM1jF8mvp'],'event_type_description': ['live_course'],'title': [''],'description': [''],'platform_name': ['Zoom'],'other_platform': [''],'record_date': [''],'date_start': [''],'date_end': [''],'time_day': ['12:00 PM'],'schedule_description': [''],'tags[]': ['not','normal','very','strange'],'event_picture': ['']}>
---------------------------
tags: strange
---------------------------
如您所见,tags
变量的值是“奇怪的”,即列表中的最后一项。为什么不是所有的清单? request.POST.get
的行为出乎意料。我错过了什么吗?
解决方法
是的。这与常规的 python dict 不同。如果需要所有值的列表,则必须使用 QueryDict.getlist 而不是 .get
tags = request.POST.getlist("tags[]")
https://docs.djangoproject.com/en/3.1/ref/request-response/#django.http.QueryDict.getlist
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。