Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get checkbox values in django application

I am trying to use a check box control in a simple django application. Code Logic seems to be fine, But I am getting an empty fruit list ([None, None]). I don't know why it's not working, Can anybody point out the mistake. Thanks in advance

index.html

<div class="form-check">
<input class="form-check-input" type="checkbox" value="Apple" id="apple">
<label class="form-check-label" for="apple">Apple</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="Mango" id="mango">
<label class="form-check-label" for="mango">Mango</label>
</div> 

view.py

if request.method == 'POST':
    fruit = []
    fruit.append(request.POST.get('apple'))
    fruit.append(request.POST.get('mango'))
like image 960
Olivia Brown Avatar asked Sep 15 '25 03:09

Olivia Brown


2 Answers

As Daniel mentioned, you have to add a name attribute to form elements, so they are submitted to the server.

index.html

<form method="post">
  {% csrf_token %}
  <div class="form-check">
    <input class="form-check-input" type="checkbox" value="Apple" id="apple" name="fruits">
    <label class="form-check-label" for="apple">Apple</label>
  </div>
  <div class="form-check">
    <input class="form-check-input" type="checkbox" value="Mango" id="mango" name="fruits">
    <label class="form-check-label" for="mango">Mango</label>
  </div>
  <button type="submit">Submit</button>
</form>

That way, you can get a list of fruits in your view:

views.py

if request.method == 'POST':
    fruits = request.POST.getlist('fruits')

The fruits variable would be a list of check inputs. E.g.:

['Apple', 'Mango']
like image 123
Vitor Freitas Avatar answered Sep 17 '25 16:09

Vitor Freitas


input elements need a name attribute, otherwise the browser does not send any data.

like image 39
Daniel Roseman Avatar answered Sep 17 '25 15:09

Daniel Roseman