You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django视图中获取POST表单中的array字典数据

在Django视图中收集表单的字典型数据

你提到的这种表单命名格式(array[key_1])在PHP中会被自动解析为数组,但Django的request.POST(QueryDict对象)不会自动做这件事,需要手动处理或者通过表单类来组装字典。下面是两种可行的方法:

方法一:直接解析request.POST

在视图里遍历POST数据的键,筛选出以array[开头的字段,提取内部键名并组装成字典:

def my_view(request):
    if request.method == 'POST':
        array_dict = {}
        # 遍历所有POST参数
        for param_key in request.POST:
            if param_key.startswith('array[') and param_key.endswith(']'):
                # 提取方括号内的键名
                inner_key = param_key[6:-1]
                array_dict[inner_key] = request.POST.get(param_key)
        # 此时array_dict就是你需要的字典
        # 后续逻辑...
    # GET请求处理逻辑...

方法二:通过Django Form类处理(更规范)

如果用表单类来验证数据,可以在clean方法中统一处理这部分字典数据:

from django import forms

class MyForm(forms.Form):
    id = forms.CharField(max_length=100)
    some_value = forms.CharField(max_length=100)

    def clean(self):
        cleaned_data = super().clean()
        array_dict = {}
        # 从表单数据中筛选目标字段
        for param_key in self.data:
            if param_key.startswith('array[') and param_key.endswith(']'):
                inner_key = param_key[6:-1]
                array_dict[inner_key] = self.data.get(param_key)
        # 将组装好的字典存入cleaned_data
        cleaned_data['array'] = array_dict
        return cleaned_data

# 视图中使用表单
def my_view(request):
    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():
            # 从cleaned_data中获取字典
            array_data = form.cleaned_data['array']
            # 处理数据...
    # GET请求逻辑...

内容的提问来源于stack exchange,提问作者Yuretz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 14:15:40