Añadimos la aplicación al archivo settings.py
de tu proyecto:
En la aplicación, creamos un archivo forms.py
para definir un formulario para el registro de usuarios usando UserCreationForm
que ya lo proporciona Django:
La clase Meta
es una forma de definir metadatos para una clase, en este caso el modelo User
de Django y fields
que define qué campos del modelo se incluirán en el formulario.
En views.py
vamos a definir la vista para manejar el registro:
Como se destaca en la línea 2, la función login()
que estamos importando, permite autenticar a un usuario y establecer una sesión para él. En la siguiente línea que se destaca importamos el formulario que definimos anteriormente, luego que preguntamos si la petición del formulario viene por el método POST
, destacamos la línea que crea una instancia del formulario UserForm
y asignándola a la variable form
pero además le pasamos como argumento request.POST
que contiene los datos en un diccionario para ser usados por Django. Esto permite al formulario validar y procesar los datos enviados por el formulario y gracias a eso podemos preguntar si el formulario es válido con if form.isvalid()
. Una vez valida los datos del formulario. Si es válido, se pueden procesar los datos para guardarlos en la base de datos con form.save()
.
Crear el directorio templates/registration
dentro de la aplicación y añadimos un archivo llamado register.html
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Registro</title>
</head>
<body>
<h2>Registro</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Registrar</button>
</form>
</body>
</html>
Añadimos la ruta en nuestro archivo urls.py
del proyecto:
1
2
3
4
5
6
7
from django.urls import path
import users.views as views
urlpatterns = [
path('admin/', admin.site.urls),
path('register/', views.register, name='register'),
]
Creamos la vista para manejar la página de inicio:
1
2
def home(request):
return render(request, 'home.html')
Luego añadimos un link para ir al registro desde la página de inicio que crearemos en templates/home.html
:
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Home</title>
</head>
<body>
<a href='{% url "login" %}'>Iniciar sesión</a>
<a href='{% url "register" %}'>Registrarse</a>
</body>
</html>