Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

226
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda