Sé que esta pregunta suena rara, pero permítanme que me explique.Django: Eliminar mensaje antes de que se muestren
Estoy usando un decorador para hacer que un mensaje persista hasta que el usuario realmente lo descarte (como el comportamiento de los mensajes de desbordamiento de pila). El problema es que, como resultado de esto, el mensaje se agrega antes de que el usuario cierre la sesión, por lo que el mensaje se muestra justo después de que el usuario cierre la sesión. Me pregunto cuál es la mejor manera de eliminar el mensaje en la vista de cierre de sesión. He pensado en dos formas de hacerlo y me pregunto si alguien puede pensar en una mejor.
estoy actualmente momento a esta:
storage = messages.get_messages(request)
storage.used = True
Durante este:
storage = messages.get_messages(request)
del storage._loaded_messages[0]
Para mí la segunda forma parece más explícita, a pesar de que es más feo: mi intención es eliminar la actualidad mensajes cargados y esto lo deja claro. La primera forma emplea un medio por el cual los mensajes se borrarán como un efecto secundario ... pero al menos no depende de una variable dunder ... ¿qué piensan ustedes?
Supongo que storage.used = True se implementa por defecto. No necesitas escribirlo. Debe escribir storage.used = False si anula el comportamiento predeterminado. –
Terminé yendo con mi primer método. Básicamente quería forzar el comportamiento predeterminado sin mostrar los mensajes. Establecer storage.used = True hace que piense que ya se han mostrado los mensajes, y así funcionó para mí. – IntrepidDude
Acepto que el primer método es mejor. Si quieres hacerlo más explícito, siempre puedes crear una función llamada 'clear_messages' que haga esos dos pasos. Entonces, si por algún motivo cambia el comportamiento de 'storage.used = True', puede actualizar la función. –