Django request.POST.get () пуст для значений поля, установленных javascript - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть форма html, где пользователь предоставляет длину, ширину и высоту, и есть событие onkeyup, связанное с функцией javascript, которая в свою очередь предоставляет объем в отключенном текстовом поле. Теперь значения отображаются в текстовом поле, и они меняются динамически, но когда я отправляю форму и обращаюсь к ней в представлениях с использованием метода POST, я получаю только значения для полей ввода, которые заполнены пользователем и отключенное текстовое поле возвращает Нет .

Я должен сохранить этот том в сеансе и передать его в следующий просмотр по запросу, но с момента request.POST.get () Нет, я не могу его восстановить.

Примечание : я просто использую расчет объема в качестве примера для объяснения проблемы.

# html

<head>
   <script>
       calcVolume(){
         var Length = Number(document.getElementsByName('length')[0].value);
         var Width = Number(document.getElementsByName('width')[0].value);
         var Height = Number(document.getElementsByName('height')[0].value);
         if (Length != '' && Width != '' && Height != '') {
             var Volume = Length * Width * Height
             document.getElementsByName('volume')[0].value = Volume;
         }
       }
   <script>
</head>    

<form method="POST" action="">
   {csrf_token}
   <table>
     <tr>
     <td><input name="length" onkeyup="calcVolume();"></td>
     <td><input name="width" onkeyup="calcVolume();"></td>
     <td><input name="height" onkeyup="calcVolume();"></td>
     <td><input name="volume" value="0" disabled></td>
     <td><button type="submit">Next</button></td>
     </tr>
   </table>
</form>



# views.py

def vol(request):
   if method.request == "POST":
     request.session['l'] = request.POST['length']
     request.session['w'] = request.POST['width']
     request.session['h'] = request.POST['height']
     request.session['volume'] = request.POST.get('volume')
     print(request.session['volume']) # here the volume is None
     return redirect('/whatever_next_page')
   else:
     return render(request,'calculate_volume.html')

1 Ответ

0 голосов
/ 04 февраля 2020

A disabled поле формы не отправляется на сервер:

Разница между отключенными и доступными только для чтения заключается в том, что элементы управления, доступные только для чтения, все еще могут функционировать и по-прежнему фокусироваться, тогда как отключены элементы управления не может получить фокус, а не представлены с формой и, как правило, не работают в качестве элементов управления, пока они не включены.

https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/disabled

При использовании readonly вместо disabled ваш код, вероятно, начнет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...