forms.py

class UpdatePasswordForm(forms.Form):

    password1 = forms.CharField(
        label='Contraseña',
        required=True,
        widget=forms.PasswordInput(
            attrs={
                'placeholder': 'Contraseña Actual'
            }
        )
    )
    password2 = forms.CharField(
        label='Contraseña',
        required=True,
        widget=forms.PasswordInput(
            attrs={
                'placeholder': 'Contraseña Nueva'
            }
        )
    )

views.py

tiene el mixin

class UpdatePasswordView(LoginRequiredMixin, FormView):
    template_name = 'users/update.html'
    form_class = UpdatePasswordForm
    success_url = reverse_lazy('users_app:user-login')
    login_url = reverse_lazy('users_app:user-login')

    def form_valid(self, form):
        usuario = self.request.user
        user = authenticate(
            username=usuario.username,
            password=form.cleaned_data['password1']
        )

        if user:
            new_password = form.cleaned_data['password2']
            usuario.set_password(new_password)
            usuario.save()

        logout(self.request)
        return super(UpdatePasswordView, self).form_valid(form)

urls.py

#
from django.urls import path

from . import views

app_name = "users_app"
urlpatterns = [
    path(
        'update/', 
        views.UpdatePasswordView.as_view(),
        name='user-update',
    ),
]

 

templates/users/update.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Cambiar Contraseña: {{ user.get_full_name }}</h1>
    <form method="post">{% csrf_token %}
        {{form.as_p}}
        <button type="submit">Actualziar</button>
    </form>
</body>
</html>

home/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Panel de usuario</h1>
    <h3>Bienvenidos: {{user}}</h3>
    <ul>
        <li><a href="{% url 'users_app:user-logout' %}">Cerrar Sesion</a></li>
        <li><a href="{% url 'users_app:user-update' %}">Actualizar Datos</a></li>
    </ul>
</body>
</html>

tienes q ingresar primero para poder cambiar el password yendo http://127.0.0.1:8000/panel

/