Sesje w Django

Opis systemu sesji (request.SESSION) we frameworku Django i możliwości wykorzystania go we własnych aplikacjach webowych

Korzystanie z sesji w Django jest bardzo proste i nie wymaga wielu linijek kodu.
  • Upewnij się czy w settings.py masz w MIDDLEWARE_CLASSES klasę django.contrib.sessions.middleware.SessionMiddleware. Domyślnie powinna tam być.
  • Dodaj do INSTALLED_APPS - 'django.contrib.sessions'
  • Wykonaj python manage.py syncdb
Gdy SessionMiddleware jest aktywne każdy obiekt HttpRequest (pierwszy argument każdej funkcji widoków) będzie miał atrybut session, które jest podobny do słownika. Można z niego czytać i dodawać wartości jak w słowniku.

Przykłady

Najprostsze, umieść w widoku:
request.session['klucz'] = 'wartosc'
print  request.session['klucz']
A po wywołaniu tego widoku (przeglądarka) w teminalu z uruchomionym serwerem django zobaczysz wypisane "wartosc".
Ten pochodzi z dokumentacji django. Jeżeli użytkownik dodał już komentarz to zablokuje próbę dodania kolejnego (spamowanie, floodowanie, dodawanie wpisów po sobie..):
def post_comment(request, new_comment):
    if request.session.get('has_commented', False):
        return HttpResponse("You've already commented.")
    c = comments.Comment(comment=new_comment)
    c.save()
    request.session['has_commented'] = True
    return HttpResponse('Thanks for your comment!')

Konfiguracja Sesji

Middleware można konfigurować z poziomu settings.py:
SESSION_COOKIE_AGE - czas ważności cookie sesji w sekundach. Domyślnie 2 tygodnie.
SESSION_COOKIE_DOMAIN - domena ciasteczka. Ustaw na swoją domenę np "rk.edu.pl" by uzyskać dostęp do ciacha w obrębie całej domeny (subdomen), 'None' na standardowe ciacho dla bieżącej domeny.
SESSION_COOKIE_NAME - nazwa ciacha dla sesji. Domyślnie sessionid.
SESSION_COOKIE_SECURE - jeżeli ustawione na True ciacho będzie przesyłane tylko przez połączenia HTTPS
SESSION_EXPIRE_AT_BROWSER_CLOSE - jeżeli ustawione na True sesja wygaśnie po zamknięciu przeglądarki
blog comments powered by Disqus

Kategorie

Strony