Djangoで複数のチェックボックスから値を取得する方法をご紹介します。
条件
- Django 2.1.7
- Python 3.7.0
実装方法
テンプレートで以下のようなチェックボックスがあるものとします。
<input type="checkbox" name="checks[]" value="1" /> <input type="checkbox" name="checks[]" value="2" /> <input type="checkbox" name="checks[]" value="3" /> <input type="checkbox" name="checks[]" value="4" />
views.pyでは以下のようにしてチェックされた値を取得します。
checks_value = request.POST.getlist('checks[]')
実装例
テンプレート
<form id="chk" method="post" name="chk" > {% csrf_token %} <input type="checkbox" name="checks[]" value="1" /> <input type="checkbox" name="checks[]" value="2" /> <input type="checkbox" name="checks[]" value="3" /> <input type="checkbox" name="checks[]" value="4" /> <input type="submit" id="button" name="button" value="送信"> </form>
views.py
# views.py抜粋 class IndexView(generic.ListView): paginate_by = 5 template_name = 'sample/index.html' model = Post def post(self, request, *args, **kwargs): checks_value = request.POST.getlist('checks[]') logger.debug("checks_value = " + str(checks_value))
実行結果
2と4をチェックした場合
checks_value = ['2', '4']
1、3、4をチェックした場合
checks_value = ['1', '3', '4']