2011-08-31 21 views
6

Wdrażam prosty system polecania. Mam oprogramowanie pośredniczące, które ustawia zmienną sesji identyfikującą użytkownika kierującego. Mam model, który wiąże użytkownika kierującego z poleconym użytkownikiem. Próbuję użyć sygnału post_save z obiektu User, aby zapełnić ten model. Jak uzyskać dostęp do obiektu sesji z obsługi sygnału post_save?Jak uzyskać sesję z obsługi sygnału w Django

Odpowiedz

1

Nie ma sposobu bez użycia thread specific global variable.

Ale nie jestem pewien, czy musisz. W przypadku mojego systemu polecania i zapraszania po prostu mam rejestrację użytkownika jako normalną i po utworzeniu użytkownika, odbierz odwołanie z sesji. W prawie wszystkich sytuacjach nadal będzie to ta sama sesja.

Jeśli w twojej sesji jest coś, co temu przeszkadza, dodałbym go do formularza użytkownika.

+0

Mam kilka problemów. 1. Mój autoryzowany system to osobna aplikacja (zbudowana na django auth), która wymaga aktywacji e-mail. Użytkownicy często nie logują się przez pierwszy czas, dopóki sesja nie wygasła. Dlatego też odsyłanie musi być rejestrowane podczas tworzenia. 2. Nie próbuję * nie zadzierać z widokami/szablonami auth (lub tworzenia), ponieważ mam nadzieję, że zrobię to całkowicie odizolowane od systemu auth (jeśli to możliwe). W tej chwili nie wygląda dobrze. –

+0

Tak, będziesz musiał użyć globalnych zmiennych specyficznych dla wątków ... coś niezręcznego. –

+0

Dzięki za pomoc. –

0

Może się okazać przydatna dokumentacja on using sessions out of views.

+1

Patrzyłem na to, ale nie wiem, jak uzyskać klucz sesji i musiałbym wiedzieć, który typ pamięci sesji jest używany. –

+1

AFAIK to nie działa, ponieważ nie masz klucza sesji w module obsługi sygnału. – guettli

Powiązane problemy