Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

223
Views
Formulario HTML POST en Django que da TypeError cuando se envía

Estoy tratando de obtener la entrada del usuario de un formulario HTML y usar ese valor para completar un gráfico ChartJS en mi aplicación Django llamada DisplayData que tiene una plantilla llamada Display.html. Tengo el siguiente formulario en mi proyecto.

Pantalla.html

 <div class="row"> <form method="POST"> {% csrf_token %} <input type="text" name="textfield"> <button type="submit">Submit</button> </form> </div>

En mi archivo de vistas, tengo el siguiente código para obtener los datos de este formulario:

vistas.py

 class ChartData(APIView): authentication_classes = [] permission_classes = [] display_id = 0 def post(self, request, format=None): display_id = self.request.POST.get("textfield") try: display_id = int(display_id) except ValueError: display_id = 2 def get(self, request, format=None): display_id = self.request.GET.get("textfield") all_entries = models.Entries.objects.all().filter(parent=display_id) #change to input from text box via display_id all_id = models.Entries.objects.all().values_list('id', flat=True) all_measurables = models.Measurables.objects.all().filter(user_id=request.user.id) #change to current user all_times = [m.timestamp for m in all_entries] all_data = [] for m in all_entries: data = m.data json_data = json.loads(data) value = json_data['value'] all_data.append(value) data = { "labels": all_times, "default": all_data, } return Response(data)

Mis direcciones URL están configuradas de la siguiente manera.

urls.py

 from .views import get_data, ChartData urlpatterns=[ url(r'^$',views.DisplayView, name='DisplayView'), url(r'^api/data/$', views.get_data, name='api-data'), url(r'^display/api/chart/data/$', views.ChartData.as_view()), url(r'^logs/', views.LogDisplay, name='Display-Logs'), ]

Cuando entro en el formulario de la página, escribo un número y presiono enviar, en mi consola aparece el siguiente error:

TypeError: el argumento int() debe ser una cadena, un objeto similar a bytes o un número, no 'NoneType'

¿Qué estoy haciendo mal?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Usar la clase APIView es prácticamente lo mismo que usar una clase View regular, como de costumbre, la solicitud entrante se envía a un método de manejo apropiado como .get() o .post()

Si está haciendo una solicitud POST . Tiene que hacer

 def post(self, request, format=None): #rest of code
over 4 years ago · Santiago Trujillo Report

0

 display_id = request.POST.get("textfield")

error con esta línea. te estás perdiendo a ti self . aquí está devolviendo NoneType. Y cambia tu método para post

 def post(self, request, format=None): display_id = self.request.POST.get("textfield") try: display_id = int(display_id) except ValueError: display_id = "here you give default value"

Obtuviste este error porque estás tratando de pasar un valor no entero como una cadena.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!