entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

Necesito validar datos de entrada en los input de mi template.html. con el framework Django.
Quisiera validar casos como: en el input nombre, no aceptar números. En el input DNI, aceptar solo números. En el input teléfono, aceptar solo números con formato (0000)-0000000. Y cosas por el estilo.
Pero no sé cómo hacerlo, porque he leido que si lo hago con javascript, igualmente la persona deshabilitando dicha característica en el navegador puede insertar datos como quiera.
Soy novato en muchos aspectos del desarrollo web y este no es la excepción. Quisiera poder validarlo en ambos lados, desde el cliente y desde el servidor.
Alguien me enseña?

PD: por favor, la via más corta posible.

1 Respuesta

2votos

pity7736 Puntos860

Buenas,

Puede hacerlo con javascript si quiere, pero siempre, siempre, SIEMPRE, valide datos en el lado del servidor.
Para hacerlo, debe hacerlo en el forms.py, en cada formulario. Ejemplo:

forms.py

class Cliente(forms.Form):
    nombre = forms.CharField()
    telefono = forms.ChardField()
    dni = forms.IntegerField()
    ...

    def clean_nombre(self):
        nombre = self.cleaned_data['nombre']
        if not nombre.isalpha():
            raise forms.ValidationError('El nombre no puede contener números')
        return nombre

Ese sería un ejemplo para validar el nombre. Hay varios métodos de validación que se pueden utilizar. Para saber más, le recomiendo la documentación oficial.

Espero ser sido de ayuda. ¡Salud!

0voto

ibrames comentado

Excelente amigo pity7736... y cómo hacerlo si tengo formularios del tipo modelForm?

0voto

Peter comentado

ibrames, moví tu respuesta a comentario.

Saludos.

0voto

pity7736 comentado

De la misma forma. Sólo que no tendría que volver a colocar los campos explícitamente. Ejemplo:

models.py

class Cliente(models.Model):
    nombre = models.CharField(max_length=50)
    telefono = models.CharField(max_length=15)
    dni = models.IntegerField()
    ...

forms.py

class ClienteForm(forms.ModelForm):
    class Meta:
        model = Cliente

    def clean_nombre(self):
    ...

Si le sirve, coloque la pregunta como solucionada. ¡Salud!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta