Forms de Django
Forms de Django
Prerrequisitos:
En resumen, se necesita:
Queremos tener:
http://127.0.0.1:8000/
En lugar de:
http://127.0.0.1:8000/path_de_url
Viendo los resultados:
forms/models.py
Archivo de forms.py:
Explicación de código
<p>Mi tutorial de forms</p>
<div class='jumbotron'>
<form action="{% url 'forms:mi_form' %}" method="post">
{% csrf_token %}
{% for field in register_form %}
<div class='form-group'>
<label for="{{ field.name }}">{{ field.label
}}</label>
{{ field }}
</div>
{% endfor %}
<br>
<center><button type="submit" class="btn btn-success
btn-lg">Registrar usuario</button></center>
</form>
</div>
Esas clases son las que sacamos de Bootstrap para hacer que
nuestra página se vea bien… pero… ¿Cómo se ve ahora?
Con lo que hemos creado hasta ahora, nuestra página sólo
tiene unos inputs que se pueden enviar pero no se hace nada
con esta información. Además, nuestro <input> de fecha es
un type=”text” que no nos sirve para nuestro propósito.
Aquí podemos ver que cada field (<input>) se inserta uno igual
al otro. No existe ningún tipo de consideración al respecto.
'placeholder':'4421234567',
}))
fecha_de_nacimiento = forms.DateField(label='Fecha de
nacimiento:',
widget=forms.SelectDateWidget(years=range(1900,2001),
attrs={
'class':'form-control',
}))
email = forms.EmailField(label='Email:',max_length=254,
widget=forms.EmailInput(
attrs={
'class':'form-control',
'placeholder':'[email protected]',
}))
¿Qué falta en esta imagen que sí está en el código de arriba? PISTA: ayuda a los usuarios a
ver un ejemplo de lo que tienen que poner en los inputs.
En el archivo mi_form.html
(forms/templates/forms/mi_form.html) agregamos unas
cuantas clases de Bootstrap para darle un poco más de estilo:
<!DOCTYPE html>
<html><head>
<title>Mis forms</title>
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bo
otstrap.min.css" integrity="sha384-
MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPM
O" crossorigin="anonymous">
</head><body>
<div class="container text-center pt-5">
<h1>Hola</h1>
<p>Mi tutorial de forms</p>
<div class='jumbotron'>
<center>
<div class="text-left" style="max-width:500px">
<form action="{% url 'forms:mi_form' %}"
method="post">
{% csrf_token %}
{% for field in register_form %}
<div class='form-group'>
<label for="{{ field.name }}">{{ field.label
}}</label>
{{ field }}
</div>
{% endfor %}
<br>
<center><button type="submit" class="btn btn-
success btn-lg">Registrar usuario</button></center>
</form>
</div>
</center>
</div>
</div><script src="https://code.jquery.com/jquery-
3.3.1.slim.min.js" integrity="sha384-
q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jiz
o" crossorigin="anonymous"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/um
d/popper.min.js" integrity="sha384-
ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm4
9" crossorigin="anonymous"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/boot
strap.min.js" integrity="sha384-
ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULT
y" crossorigin="anonymous"></script>
</body>
</html>
int(self.data['fecha_de_nacimiento_month']),
int(self.data['fecha_de_nacimiento_day']))
nuevo_usuario = Usuarios(nombre=self.data['nombre'],
telefono=self.data['telefono'],
fecha_de_nacimiento=fecha,
email=self.data['email'])
nuevo_usuario.save()
return 'Registro exitoso'
int(self.data['fecha_de_nacimiento_month']),
int(self.data['fecha_de_nacimiento_day']))
nuevo_usuario = Usuarios(nombre=self.data['nombre'],
telefono=self.data['telefono'],
fecha_de_nacimiento=fecha,
email=self.data['email'])
nuevo_usuario.save()
return 'Registro exitoso'
Pero no es sino hasta esta parte que le decimos que guarde
ese nuevo_usuario en nuestra base de datos (gracias al
método .save() de Django).