【问题标题】:Django get request.POST.get() parameter not working as expected, parameter name with brackets[] [duplicate]Django get request.POST.get() 参数未按预期工作,带括号的参数名称 [] [重复]
【发布时间】:2021-05-25 07:05:55
【问题描述】:

我有一个行为非常奇怪的代码。视图接收到一个带有键"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 变量的值是“strange”,即列表中的最后一项。为什么不是所有列表? request.POST.get 的行为出人意料。我错过了什么吗?

【问题讨论】:

    标签: django django-request


    【解决方案1】:

    是的。这与普通的 python 字典不同。如果您需要所有值的列表,则必须使用 QueryDict.getlist 而不是 .get

    tags = request.POST.getlist("tags[]")
    

    https://docs.djangoproject.com/en/3.1/ref/request-response/#django.http.QueryDict.getlist

    【讨论】:

      猜你喜欢
      • 2015-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 2016-05-03
      • 2018-10-19
      • 2016-07-01
      • 1970-01-01
      相关资源
      最近更新 更多