Wpis z mikrobloga

Mireczki, w jaki sposób wygenerować sobie jakiś unikalny ciąg znaków alfanumerycznych na podstawie ciasteczek w Django? Chciałem skorzystać z requesy.COOKIES['sessionid'] i wszystko fajnie działa, ale tylko na Chromie. Na innych przeglądarkach nie działa w ogóle, nie ma ciasteczek.
Zakładam w takim razie, że podejście złe. Może ktoś mnie do czegoś odwołać? Albo pomóc? Załączam dwa pliki, które mogą mieć znaczenie, jeżeli potrzeba inne to dajcie znać.

settings.py
views.py

#python #django #programowanie #naukaprogramowania #cookies
  • 28
@frax: będzie działać dla każdej przeglądarki?
@LOLWTF: tak mam powiedziane w zadaniu. Muszę używać ciasteczek do wygenerowania unikalnego klucza dla użytkownika, który to potem będzie miał dostęp tylko do swoich wpisów w bazie danych
@Wypok_spoko: To jest wszystko na serwerze, przeglądarka nie ma nic (prawie) do tego. Przy czym request.COOKIES to są ciasteczka wysłane z konkretnym zapytaniem, więc w szczególności przy pierwszym zapytaniu w sesji są (i zawsze będą) puste. No i wyciąganie ID stamtąd jest zupełnie naokoło.

Zobacz ten link co wrzuciłem, w trakcie pierwszego zapytania session_key jest rzeczywiście None, ale chyba powinno się to dać jakoś obejść - w każdym razie o
@Wypok_spoko: No i pamiętaj, że id zmienia się po zalogowaniu. Być może lepszą opcją jest trzymać jednak jakieś dane w sesji, a nie podczepiać się pod samo id.
Muszę używać ciasteczek do wygenerowania unikalnego klucza dla użytkownika, który to potem będzie miał dostęp tylko do swoich wpisów w bazie danych


@Wypok_spoko: Prawdpodobnie robisz to od dupy strony. Ciasteczkami chcesz dostęp kontrolować?
Muszę używać ciasteczek do wygenerowania unikalnego klucza dla użytkownika, który to potem będzie miał dostęp tylko do swoich wpisów w bazie danych


@Wypok_spoko: Na pewno masz użyć ciastek do generowania klucza? To nie ma żadnego sensu. Możesz (w praktyce to musisz) użyć ciastek do tego, żeby ten klucz w każdym requeście mieć - to właśnie robi SessionMiddleware, i niczego więcej nie powinieneś potrzebować.
@Szarlejowiec: pewnie tak, pewnie robię to od D. strony. Chodzi o to, że użytkownik odwiedza moją stronę wypok.pl i przekierowywuje go na wypok.pl/uniqueaddres. Tam ma pole do wpisywania danych do bazy i pod tym polem wyświetlają się tylko jego wpisy, bo w krotkach jest podany też uniqueaddres.
@frax: w sumie czy do generowania? chyba nie. Chodzi o to, że jak użytkownik wróci to żeby nie przypisało mu nowego
@Wypok_spoko: Kurde, odpowiedzi byś przeczytał. Przecież masz na tym stacku napisane w zaakceptowanej odpowiedzi, że jak wywołasz request.session.save() to id się generuje.
@Wypok_spoko: Natomiast nie wiem, czy to jest poprawne rozwiązanie twojego zadania - na pewno chodzi o to, żeby użytkownik był identyfikowany adresem, a nie samym ciastkiem? Ten osobny url nie jest ci do niczego potrzebny.

Co dzieje się tak samo? Jeśli wywołasz request.session.save() w widoku, i potem zapytasz o request.session.session_key, to powinieneś dostać id. Chyba, że potrzebne jest, żeby sesja nie była pusta - możesz spróbować coś do niej wrzucić,
@frax: Strona ma działać bez użycia autoryzacji i zapamiętywać użytkowników bazując na cookies i url (każdy użytkownik ma unikalny url). Takie jest polecenie.

save() wykonuję w widoku (RedirectView) , pierwszym który zbiera dane o session key i przekierowuje na stronę /session_key/