Django: Cómo usar handler500 para redirigir a una página de servidor frontend y también recibir un correo electrónico de error de administrador.
Mi pregunta es muy similar a esta otra, excepto que mi problema es que mi página frontend está en otro servidor, una aplicación de Angular.
Básicamente, lo que necesito es enviar una respuesta de redireccionamiento a mi frontend de Angular cuando el usuario enfrenta un error 500, pero también me gustaría recibir correos electrónicos de administrador con trazas de pila. Esto solo sucede cuando la respuesta es un error 500, no el 302 devuelto por la redirección del handler500.
davy.ai
Redireccionamiento y manejo de errores de servidor interno en Django con frontend externo
Si tiene una aplicación de frontend externa en Angular y su backend de Django devuelve un error de servidor interno 500, es posible que desee enviar una respuesta de redireccionamiento a su frontend de Angular y recibir correos electrónicos de administrador con trazas de pila.
Para lograr esto, puede personalizar la función
handler500
de Django en su archivourls.py
para manejar el error 500 y enviar la respuesta de redireccionamiento. También puede usar la función integrada de Djangomail_admins
para enviar correos electrónicos de administrador con trazas de pila.Aquí hay un ejemplo de cómo puede modificar su función
handler500
:En este ejemplo, importamos el módulo de vista
defaults
de Django y las funcionesmail_admins
yredirect
. Luego definimos nuestra funciónhandler500
para llamar amail_admins
para enviar un correo electrónico de administrador con una traza de pila del error. También usamosredirect
para enviar una respuesta de redireccionamiento a nuestro frontend de Angular.Asegúrese de reemplazar `http://su-frontend-angular.com` con la URL real de su servidor frontend de Angular.
Con esta modificación, cuando ocurra un error de servidor interno 500 en su backend de Django, la función
handler500
enviará un correo electrónico de administrador con una traza de pila y redireccionará al usuario a su aplicación de frontend de Angular.Tenga en cuenta que esto solo ocurrirá cuando se devuelva un error 500, no cuando se devuelva un 302 como en el caso de una redirección exitosa.