Cosa fare nell'__init__ delle BrowserView

Molto semplicemente: nulla, MAI.

Quando si scrive una BrowserView è importante tenere a mente che quando viene eseguito il metodo __init__:

  • i meccanismi di autenticazione/autorizzazione non sono ancora stati attivati (quindi non si può sapere chi è l'utente etc)
  • qualunque eccezione viene silenziosamente ingoiata dal publisher mentre fa il traversing
Insomma, la morale è: se state scrivendo della logica in __init__ probabilmente state sbagliando qualcosa. Fatelo solo in caso di attacco alieno se non avete nessuna alternativa.
O, con le parole di Hanno: 
> In general you shouldn't do anything in the __init__ of a view, but
> instead do everything in the __call__ method. This applies to all
> views, not just Dexterity views. When the __init__ is called, you
> don't have a security context set up yet, so there's certain things
> that won't work. It's much easier to just not do anything there,
> instead of debugging such problems.

Share this on

Share |

On same topics

Commenti

comments powered by Disqus