аргумент int() должен быть строкой, байтоподобным объектом или числом, а не html-формой с ошибкой ‘NoneType’

#django #forms

#django #формы

Вопрос:

Я получаю эту ошибку при попытке запустить html-программу django.

 File "C:Usersankitprojectdetricalcviews.py", line 22, in speedup
 m1 = int(request.POST.get('mi1'))
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
  

функция

 ```def speedup(request):
      #line22  
      m1 = int(request.POST.get('mi1'))
      m3 = int(request.POST.get('mi3'))
     
      #calculation stuff 
      return render(request, 'Speed Result.html', {"days": T})```
  

html-форма

   ```<form action= "{%url 'sp'%}" method="POST" >
    {% csrf_token %}
   <label for="mi1"> Enter 1 minute  :</label> <br><input type="number" id="mi1"  name="mi1" ><br>
   <label for="mi3"> Enter 3 minute  :</label>  <br><input type="number" id="mi3" name="mi3" ><br>
   
    </html>```
  

Ответ №1:

Я предпочитаю использовать подобные формы в django :

 def speedup(request):
     m1 = 0
     m3 = 0
     if request.method == 'POST':
          form = # you should write here your form class
          if form.is_valid():
               form.save()
               m1 = form.cleaned_data['mi1']
               m3 = form.cleaned_data['mi3']
               # calculation staff can be here
    context = { 'form': form, 'm1': m1, 'm3': m3 }
    return render(request, # your html file, context)
  

затем в HTML-файл вам нужно добавить {{ form.as_p }}

вы также можете ознакомиться с документацией, довольно яснойhttps://docs.djangoproject.com/en/3.1/topics/forms/#the-view