Djangoのrequest.POSTからの値取得 - name属性が同じinputが複数ある場合


request.POST(QueryDict)から値を取得する際、チェックボックスのようにname属性が同じinputタグが複数ある場合はgetlistを使う

<form method="post">
  <input type="checkbox" value="1" name="books">
  <input type="checkbox" value="2" name="books">
  <input type="checkbox" value="3" name="books">
</form>
print request.POST
# => <QueryDict: { u'books': [u'1', u'2', u'3']}>

# これだと最後の1つしかとれない
books = request.POST["books"]
# => 3

# getlistを使うとlistで取得できる
books = request.POST.getlist('books') 
# => [u'1', u'2', u'3']