Django相当于PHP的表单值数组/关联数组

在PHP中,我会这样做的name作为一个数组。

 <input type"text" name="name[]" /> <input type"text" name="name[]" /> 

或者,如果我想获得name作为关联数组:

 <input type"text" name="name[first]" /> <input type"text" name="name[last]" /> 

什么Django等同于这样的事情?

查看QueryDict文档 ,特别是QueryDict.getlist(key)的用法。

由于在视图中的request.POST和request.GET是QueryDict的实例,你可以这样做:

 <form action='/my/path/' method='POST'> <input type='text' name='hi' value='heya1'> <input type='text' name='hi' value='heya2'> <input type='submit' value='Go'> </form> 

然后像这样的东西:

 def mypath(request): if request.method == 'POST': greetings = request.POST.getlist('hi') # will be ['heya1','heya2'] 

对不起挖掘这个,但Django有一个utils.datastructures.DotExpandedDict。 这是一份文件:

 >>> d = DotExpandedDict({'person.1.firstname': ['Simon'], \ 'person.1.lastname': ['Willison'], \ 'person.2.firstname': ['Adrian'], \ 'person.2.lastname': ['Holovaty']}) >>> d {'person': {'1': {'lastname': ['Willison'], 'firstname': ['Simon']}, '2': {'lastname': ['Holovaty'], 'firstname': ['Adrian']}}} 

唯一的区别是你使用点的而不是括号。 我认为它现在在概念上被replace为表单集中的前缀表单,但是该类留在了代码库中。

Django没有提供从请求对象中获取关联数组(Python中的字典)的方法。 第一个答案指出,可以根据需要使用.getlist() ,或者编写一个可以接受QueryDict的函数,并根据自己的喜好重新组织它(如果键匹配某个key[*]模式,则拉出键/值对,例如)。