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

289
Vistas
¿Por qué mi formulario Django no genera ningún error?

Tengo un formulario simple y cada vez que el usuario hace algo mal en el formulario, me gustaría generar un error de validación en Django. El problema es que configuré la validación del formulario, pero cuando el formulario se envía con valores incorrectos, se procesa. Me preguntaba por qué está sucediendo y cómo puedo evitarlo.

Aquí está el formulario html:

 <form id="ask-project" method="post" action="{% url 'ask-project' %}"> {% csrf_token %} <input required="required" class="form-control form-text required" id="prenom" name="prenom" type="text"> <button class="btn btn-default submit">Submit</button> </form>

vistas.py:

 def askProject(request): if request.method == 'POST': form = AskProjectForm(request.POST) if form.is_valid(): save_it = form.save(commit=False) save_it.save() return redirect('/merci/') #success

formularios.py:

 class AskProjectForm(forms.ModelForm): class Meta: model = AskProject fields = ['prenom'] def clean_prenom(self): prenom = self.cleaned_data['prenom'] if len(prenom) < 3: raise ValidationError('Votre prénom doit etre plus long que 1 caractère.') return prenom

¿Estoy haciendo algo mal?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Con el patrón que está utilizando, este tipo de problema es inevitable y está a la orden del día. Lo primero es no representar el formulario manualmente como parece que lo está haciendo. Eso significa que no está mostrando ningún comentario cuando el usuario ingresa datos no válidos. Considere usar {{ form }} , {{ form.as_table }} etc. o representar los campos con toda la información como se describe aquí: https://docs.djangoproject.com/en/1.11/topics/forms/#rendering-fields- a mano

El segundo problema es que está redirigiendo cuando se envía el formulario, independientemente de si es válido o no. El patrón recomendado es redirigir solo cuando el formulario es válido. Entonces, incluso si aplica la sugerencia en el primer párrafo, todavía no está recibiendo la retroalimentación requerida. Considere implementar el formulario como se sugiere en el manual. Sigue una copia directa del pasado

 if request.method == 'POST': # create a form instance and populate it with data from the request: form = NameForm(request.POST) # check whether it's valid: if form.is_valid(): # process the data in form.cleaned_data as required # ... # redirect to a new URL: return HttpResponseRedirect('/thanks/') # if a GET (or any other method) we'll create a blank form else: form = NameForm() return render(request, 'name.html', {'form': form})

Finalmente, yendo al caso específico de por qué la validación de su formulario no funciona, agregue una declaración de impresión en su método limpio para imprimir tanto la cadena como su longitud, ver si coincide (o si incluso se llama a su método)

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