在 Django 中访问列表 request.POST
Accessing Lists in Django request.POST
我无法访问我的 post
函数中的表单返回的所有数据。我注意到打印 request.POST
时显示的内容与我的代码访问此数据时显示的内容存在显着差异。希望有人能给我解释一下。
print(request.POST)
的输出:
print(request.POST)
<QueryDict: {'csrfmiddlewaretoken': ['AXMPO...'],
'start_date': ['2019-03-01'], 'end_date': ['2019-03-26'],
'reports': ['4', '1']}>
为了检查我的代码正在处理的数据,我使用了 json
模块来查看数据。我的代码在调试期间的行为符合以下表示:
json.dumps(request.POST)
'{"csrfmiddlewaretoken": "AXMPO...",
"start_date": "2019-03-01", "end_date": "2019-03-26",
"reports": "1"}'
在您看到 "reports"
值之前,它们看起来非常相似。用户 select 通过我表单上的 MultipleSelect 小部件发送这些报告,我的代码正在遍历提供的 ID 号。但是,无论我select被举报多少次,我都只能得到一个ID。如果有人能解释为什么会这样,我将不胜感激。
事实证明这是一个非常老派的问题。不过,我希望这在文档中更加突出。 Simon Willson 的解释如下:
"""
这是一个功能,不是错误。如果您想要一个键的值列表,请使用以下内容:
values = request.POST.getlist('key')
这背后的原因是 API 方法应该始终 return 字符串或列表,但绝不能两者兼而有之。 Web 应用程序中的常见情况是将表单键与单个值相关联,因此这就是 [] 语法的作用。当您打算多次使用一个键来获得一个值时,getlist() 就可以用于这种情况(比如您的情况)。
""" - Simon Willson,13 年前。
我无法访问我的 post
函数中的表单返回的所有数据。我注意到打印 request.POST
时显示的内容与我的代码访问此数据时显示的内容存在显着差异。希望有人能给我解释一下。
print(request.POST)
的输出:
print(request.POST)
<QueryDict: {'csrfmiddlewaretoken': ['AXMPO...'],
'start_date': ['2019-03-01'], 'end_date': ['2019-03-26'],
'reports': ['4', '1']}>
为了检查我的代码正在处理的数据,我使用了 json
模块来查看数据。我的代码在调试期间的行为符合以下表示:
json.dumps(request.POST)
'{"csrfmiddlewaretoken": "AXMPO...",
"start_date": "2019-03-01", "end_date": "2019-03-26",
"reports": "1"}'
在您看到 "reports"
值之前,它们看起来非常相似。用户 select 通过我表单上的 MultipleSelect 小部件发送这些报告,我的代码正在遍历提供的 ID 号。但是,无论我select被举报多少次,我都只能得到一个ID。如果有人能解释为什么会这样,我将不胜感激。
事实证明这是一个非常老派的问题。不过,我希望这在文档中更加突出。 Simon Willson 的解释如下:
"""
这是一个功能,不是错误。如果您想要一个键的值列表,请使用以下内容:
values = request.POST.getlist('key')
这背后的原因是 API 方法应该始终 return 字符串或列表,但绝不能两者兼而有之。 Web 应用程序中的常见情况是将表单键与单个值相关联,因此这就是 [] 语法的作用。当您打算多次使用一个键来获得一个值时,getlist() 就可以用于这种情况(比如您的情况)。 """ - Simon Willson,13 年前。