Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

224
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda