Задать вопрос
@Dbtzhv

Почему не могу словить чекбокс из шаблона в представлении?

Вот кусок из html, чекбокс из которого я и зочу получить во view:

<form method="post" id="connectRoomForm" action="{% url 'make_connection_request' %}" >
          <div class="modal-body">
          <div class="mb-3">
            {% csrf_token %}
            <label for="InputRoomCode" class="form-label">Код комнаты</label>
            <input type="text" class="form-control" id="InputRoomCode" aria-describedby="InputRoomCodeHelp" name="room">
          </div>
          <div class="mb-3 form-check">
            <input type="checkbox" class="form-check-input" id="exampleCheck1" name="my_checkbox">
            <label class="form-check-label" for="exampleCheck1">Подключиться как зритель</label>
          </div>
          <button type="button" id="connectButton" class="btn btn-outline-secondary">Отсканируйте QR Код комнаты</button>
 
          <button type="submit" class="btn btn-primary">Подключиться</button>
        </form>

<script>
document.addEventListener('DOMContentLoaded', function() {
  var connectButton = document.getElementById('connectButton');
  var inputRoomCode = document.getElementById('InputRoomCode');

  connectButton.addEventListener('click', function() {
    var roomCode = inputRoomCode.value;

    // Проверяем, если roomCode не пустой
    if (roomCode.trim() !== '') {
      window.location.href = '/room/generate_qr_code/' + roomCode + '/';
    } else {
      // Если roomCode пустой, выводим сообщение об ошибке
      alert('Код комнаты не может быть пустым.');
    }
  });
});

</script>





в этом представлении я могу словить my_checkbox, и уже на основе этого делать дальнейшие действия:
def make_connection_request(request):
    if request.method == 'POST':
        try:
            room_code = request.POST.get('room')

            # Получите текущего пользователя (CustomUser)
            user = request.user

            # Найдите комнату по её коду
            room = Rooms.objects.get(code=room_code)

            my_checkbox = request.POST.get('my_checkbox')

            # Преобразуйте значение чекбокса в тип bool
            my_checkbox = my_checkbox == 'on'



а в этом представлении не могу его словить:
def make_qr_connection_request(request, code):
    if request.method == 'GET':

        # Получите текущего пользователя (CustomUser)
        user = request.user

        # Найдите комнату по её коду
        room = Rooms.objects.get(code=code)
        
        ...



Почему и как это исправить? Я так понимаю, это связано с get-методом.
  • Вопрос задан
  • 56 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting

form method="post"

а в этом представлении не могу его словить:


def make_qr_connection_request(request, code):
    if request.method == 'GET':


Отправляем POSTом, а условие пишем на GET, давайте все таки определимся, предлагаю так:
def make_qr_connection_request(request, code):
    if request.method == 'POST':

И еще, Ваша форма шлет запрос на make_connection_request, разумеется Вы ничего не поймаете в make_qr_connection_request (посмотрите на наименования). Вам нужно либо создать 2 формы с разными:
<form method="post" id="connectRoomForm" action="{% url 'make_connection_request' %}" >
<form method="post" id="connectRoomForm" action="{% url 'make_qr_connection_request' %}" >

либо написать js, который сможет слать формы сразу по 2 адресам.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы