Django Cambiar Contraseña
Aprenderemos cómo crear una página web para que el usuario cambie la contraseña después de iniciar sesión en la página web de Django.
Cree una página web para que el usuario cambie la contraseña en Django
Por ejemplo, tenemos un proyecto en Django y trabajaremos en este proyecto donde tenemos la aplicación de los usuarios. En esta aplicación, encontramos el archivo views.py
, y necesitamos importar dos vistas necesarias.
Uno de ellos se llama PasswordChangeView
, que nos permitirá cambiar la contraseña, y el PasswordResetDoneView
confirmará que se ha restablecido la contraseña.
Ahora necesitamos definir una clase llamada MyPasswordChangeView
que heredará de PasswordChangeView
; dentro de esta clase, declaramos la variable template_name
y almacenamos la URL de la plantilla donde el usuario cambiará la contraseña.
En la variable success_url
, necesitamos poner la variable reverse_lazy()
. Debajo del código, necesitamos crear otra clase llamada MyPasswordResetDoneView
y heredarla de PasswordResetDoneView
.
Solo declaramos la variable template_name
dentro de esta clase y almacenamos la ruta de la plantilla a esta variable template_name
; luego, debemos guardarlo y registrar estas vistas en el archivo urls.py
.
Archivo views.py
:
from django.shortcuts import render
from django.urls import reverse_lazy
from django.contrib.auth.views import PasswordChangeView, PasswordResetDoneView
class MyPasswordChangeView(PasswordChangeView):
template_name = "users/password-change.html"
success_url = reverse_lazy("users:password-change-done-view")
class MyPasswordResetDoneView(PasswordResetDoneView):
template_name = "users/password-reset-done.html"
Crearemos un archivo urls.py
dentro de la aplicación de los usuarios y luego importaremos nuestras vistas al archivo que creamos.
Luego necesitamos crear una variable llamada app_name
e igual a usuarios
, que es el nombre de nuestra aplicación. Debajo de la línea, crearemos una lista de urlpatterns
donde integraremos vistas con URL.
Crearemos plantillas, pero antes de movernos a cualquier parte, debemos incluir la ruta de los usuarios a urlpatterns
del proyecto principal en el archivo urls.py
. Vamos a crear una nueva ruta debajo de movies
para los usuarios, y el namespace
debe coincidir con la aplicación; después de escribir el código, guárdelo.
Ahora podemos volver a la app de los usuarios, y por aquí, vamos a crear una carpeta templates
; dentro de la templates
, crearemos otra carpeta llamada users
. En la carpeta users
, necesitamos crear dos archivos HTML que hemos definido dentro del archivo views.py
.
Empezaremos a trabajar en el archivo password-change.html
, así que en primer lugar, hereda del base.html
, y después, ponemos el block title
y el block content
que consistirá en un formulario. Pongamos en blanco form action
, y el método es igual a POST
, lo que significa que estamos tratando con una petición POST
.
Tenemos que poner csrf_token
dentro del formulario, lo que permitirá enviar peticiones. Crearemos un botón y mantendremos este tipo como submit
, haciendo que sea un botón verde añadiendo una clase.
Trabajaremos en password-reset-done.html
, y aquí, nuevamente necesitamos heredar del archivo base.html
; después de esto, el enfoque será el mismo, pero la sintaxis será un poco diferente.
Luego, escribiremos un atributo href
y proporcionaremos el nombre de la ruta para la vista de inicio, por lo que el usuario se comunicará presionando este botón.
Lo último es ir al home.html
para crear un botón para acceder a una página donde el usuario cambiará la contraseña.
El servidor se está ejecutando, e iremos a cambiar la contraseña a través de la página de inicio, y podemos ver que después de iniciar sesión, el usuario puede cambiar la contraseña.
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn