Django get request.POST.get() 参数未按预期工作,参数名称带括号[]
Django get request.POST.get() parameter not working as expected, parameter name with brackets[]
我有一段代码非常奇怪。视图收到一个 POST 带有键 "tags[]"
的请求,它是一个列表。我需要获取该列表,但 request.POST.get()
仅 returns 列表的最后一项。这是代码:
....
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
变量的值为“strange”,即列表中的最后一项。为什么不是所有的列表? request.POST.get
的行为异常。我错过了什么吗?
是的。这与常规 python 字典不同。如果您需要所有值的列表,则必须使用 QueryDict.getlist 而不是 .get
tags = request.POST.getlist("tags[]")
https://docs.djangoproject.com/en/3.1/ref/request-response/#django.http.QueryDict.getlist
我有一段代码非常奇怪。视图收到一个 POST 带有键 "tags[]"
的请求,它是一个列表。我需要获取该列表,但 request.POST.get()
仅 returns 列表的最后一项。这是代码:
....
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
变量的值为“strange”,即列表中的最后一项。为什么不是所有的列表? request.POST.get
的行为异常。我错过了什么吗?
是的。这与常规 python 字典不同。如果您需要所有值的列表,则必须使用 QueryDict.getlist 而不是 .get
tags = request.POST.getlist("tags[]")
https://docs.djangoproject.com/en/3.1/ref/request-response/#django.http.QueryDict.getlist