코딩공부/Python Django

django checkbox 값 넘기기

integerJI 2020. 8. 30. 16:57

django를 사용하며 html에서 views.py로 값을 넘기는 방법은 여러 가지가 있습니다.

 

1. form을 이용해 request값을 넘기기

 

2. ajax를 통하여 값을 넘기기

 

3. django의 forms.py를 이용해 views.py로 넘기기

 

 

이번에는 checkbox의 value값을 넘기려다 생긴 문제를 해결해 보겠습니다.

 

checkbox의 값을 ajax를 통해 변수값으로 받거나 forms을 사용하면 쉽게 해결할 수 있습니다.

 

하지만 진행중인 프로젝트의 구조를 갑자기 바꾸기는 어려울 것입니다.

 

 

bootstrap의 checkbox를 가져와 사용하고 있습니다.

 

체크가 되면 value값을 1로 넘기지만

 

만약 체크가 안되어있다면??

 

 

MultiValueDictKeyError 에러가 나옵니다...

 

값이 없기 때문이죠...

 

위에서 언급한 것처럼 회원가입의 로직은 request를 이용해 값을 넘겨주고 있습니다.

 

해당 checkbox 값을 ajax나 form을 이용하지 않고 보낼 수는 없을까? 하다 찾아보았습니다.

 

https://citylock77.tistory.com/83

 

Django - request.POST 여러개 선택된 checkbox 값 읽어오기

하나의 값을 선택한 경우 radio 버튼을 이용하면 되는데, 여러개의 값을 선택해야 하는 경우 checkbox 로 선택해서 가져올수 있다. 그런데 이 경우 radio 와 동일하게 값을 처리하면 마지막에 선택한 �

citylock77.tistory.com

해당 글을 보면 checkbox의 값을 list로 넘겨주며 list로 받고 있습니다.

 

해당 부분을 이용하면..

 

 

체크박스가 체크되지 않아도 리스트의 값이 0으로 넘어가

 

MultiValueDictKeyError를 피할 수 있습니다!

 

이제 html단에서 체크박스를 선택하지 않을 경우와 

 

view단에서 선택하지 않을 경우의 유효성 검사만 체크를 하면 끝!