Ambas vistas ya devolvían JSON en POST y exigen sesión, así que sin cambio de backend:
- ChangePasswordForm.tsx: 4 campos (actual/nueva/confirmar/token) con mostrar-ocultar;
POST form-urlencoded + CSRF a change_password; mensaje HTML; si el backend responde
redirect:true (logout por seguridad), redirige a login.
- SecurityTokenForm.tsx: muestra la fecha del token y un botón que solicita uno nuevo;
POST -> actualiza la fecha con token_date de la respuesta.
- Plantillas: los <form> + scripts jQuery se sustituyen por las islas
(#change-password-app / #security-token-app) con data-csrf/data-url. El texto
informativo y los enlaces se quedan en Django.
Verificado: check OK; ambas vistas siguen redirigiendo a login/index sin sesión.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>