2015-10-02 19 views
29

Próbuję zrozumieć różnice w funkcjonalności i celu między g i session. Oba są obiektami do "zawieszenia" danych sesji, czy mam rację? Jeśli tak, to jakie dokładnie są różnice i jakich należy użyć w jakich przypadkach?Kolba: "sesja" kontra "g"?

Odpowiedz

40

Nie, jest nie obiektu do zawieszenia danych sesji. g Dane nie są zachowywane między żądaniami.

session udostępnia miejsce do przechowywania danych dla określonej przeglądarki. Jako użytkownik Twojej aplikacji Flask, używając określonej przeglądarki, zwraca więcej żądań, dane sesji są przenoszone na te żądania.

g z drugiej strony to dane dzielone między różnymi częściami bazy kodu ciągu jeden żądanie cyklu. g może być skonfigurowany podczas haków before_request, jest nadal dostępny w fazie teardown_request, a po wysłaniu żądania i wysłaniu go do klienta zostaje wyczyszczony g.

+7

Więc 'sesja' to dane" na kliencie "(w oparciu o plik cookie?), A' g' to dane na żądanie? –

+5

@AvivCohn: dokładnie. Zaletą 'g' jest to, że istnieje we wszystkich twoich żądaniach, jest bezpieczne dla wątków i specyficzne dla twojej bieżącej aplikacji (gdybyś miał * zagnieżdżać * aplikacje Flask, w których jeden wywołuje inny, staje się ważny). Możesz więc ustawić obiekt użytkownika lub połączenie z bazą danych za pomocą haka 'before_request', a następnie uzyskać dostęp do tego samego użytkownika lub połączenia w szablonach i nadal mieć dostęp do haka przerywanego bez konieczności przesyłania go do każdego połączenia. –