2015-10-02 21 views
29

Sto cercando di capire le differenze di funzionalità e scopo tra g e session. Entrambi sono oggetti per "appendere" i dati della sessione, ho ragione? Se sì, quali sono esattamente le differenze e quale dovrei usare in quali casi?Flask: "sessione" vs. "g"?

risposta

40

No, g è non un oggetto su cui appendere i dati di sessione. I dati g non vengono mantenuti tra le richieste.

consente di memorizzare i dati per browser specifico. Come utente della tua app Flask, utilizzando un browser specifico, restituisce per più richieste, i dati della sessione vengono trasferiti attraverso tali richieste.

g d'altra parte è di dati condivisi tra le diverse parti del codice di base entro uno richiesta ciclo. g può essere impostato durante gli hook before_request, è ancora disponibile durante la fase teardown_request e una volta che la richiesta è stata eseguita e inviata al client, g viene cancellato.

+7

Quindi 'session' è 'per client' (basato su un cookie?) E' g' sono dati per richiesta? –

+5

@AvivCohn: esattamente. Il vantaggio di 'g' è che esiste su tutta la tua richiesta, è thread-safe e specifico per la tua app corrente (se dovessi * nidificare * le applicazioni Flask dove una chiama un'altra diventa importante). In questo modo è possibile impostare un oggetto utente o una connessione al database con un hook 'before_request', quindi accedere allo stesso utente o connessione nei modelli e continuare a essere disponibili in un hook di rimozione senza doverlo passare ad ogni chiamata. –

Problemi correlati