Django POST请求未按预期组织数据

2024-04-25 13:21:22 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个表格,我张贴到一个Django应用程序。字段名如下: 字段[section][name][attr],其中节、名称等可以有任意数量的值。当我尝试访问POST请求中的数据时,这些就是QueryDict中的精确键,因此要访问数据,我必须执行以下操作请求.发布.获取('field[section][name][attr]')。为什么Django不创建层次结构,这样我就可以像

fields = request.POST.getlist('field')

然后用类似的东西从那里走得更深

for section, value in fields:
    for field_name, attributes in value:

似乎我必须使用正则表达式来处理表单数据。我错过什么了吗?你知道吗

附加信息:我的字段表单元素定义为:

input type="hidden" name="field[{{ section|underscore|lower }}][{{field.name }}][label]" value="{{ field.label }}"
input type="hidden" name="field[{{ section|underscore|lower }}][{{field.name }}][help]" value="{{ field.help }}"
input type="hidden" name="field[{{ section|underscore|lower }}][{{field.name }}][kind]" value="{{ field.kind }}"

因此,POST数据如下所示:

'field[section_name][field_name][label]': label_value
'field[section_name][field_name][help]': help_value
'field[section_name][field_name][kind]': kind_value

例如使用请求.发布.列表():

('section[]', ['Qualys', 'Notifications'])
('field[qualys][test][label]', ['Test'])
('field[qualys][test][help]', ['My help text.'])
('field[qualys][test][kind]', ['string'])

因此,如果我想检索标签值,例如,我必须:

request.POST.get('field[section_name][field_name][label]')

由于节\名和字段\名事先不知道,所以我必须使用正则表达式将它们提取出来。你知道吗


Tags: 数据namefieldinputvaluetypehelpsection