In PHP, I would do this to get name
as an array.
Check out the QueryDict documentation, particularly the usage of QueryDict.getlist(key).
Since request.POST and request.GET in the view are instances of QueryDict, you could do this:
<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>
Then something like this:
def mypath(request):
if request.method == 'POST':
greetings = request.POST.getlist('hi') # will be ['heya1','heya2']
Django does not provide a way to get associative arrays (dictionaries in Python) from the request object. As the first answer pointed out, you can use .getlist()
as needed, or write a function that can take a QueryDict
and reorganize it to your liking (pulling out key/value pairs if the key matches some key[*]
pattern, for example).
Sorry for digging this up, but Django has an utils.datastructures.DotExpandedDict. Here's a piece of it's docs:
>>> 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']}}}
The only difference being you use dot's instead of brackets.
EDIT: This mechanism was replaced by form prefixes, but here's the old code you can drop in your app if you still want to use this concept: https://gist.github.com/grzes/73142ed99dc8ad6ac4fc9fb9f4e87d60