English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Sessione di sessione in Django

A volte, potresti dover memorizzare alcuni dati degli utenti nel tuo sito web secondo le esigenze della tua applicazione web. Ricorda sempre che i cookie vengono memorizzati sul client e, in base al livello di sicurezza del tuo browser client, viene impostato il tempo di vita del cookie, a volte potrebbe non essere necessario.

Per illustrare come Django gestisce i cookie, creiamo un sistema che utilizza la funzione di login precedentemente creata. Il sistema ti permetterà di accedere per x minuti, dopo di che l'applicazione disconnetterà automaticamente le tue informazioni di accesso.

Per questo, è necessario impostare due cookie: last_connection e username.

Prima di tutto, cambiiamo la vista di login per memorizzare il nome utente e i cookie di last_connection -

Esempio
# Nome del file: example.py
# Copyright: 2020 Da w3codebox
# Autore: it.oldtoolbag.com
from django.template import RequestContext
 def login(request):
    username = "not logged in"
    if request.method == "POST":
       # Ottieni il modulo inviato
       MyLoginForm = LoginForm(request.POST)
    if MyLoginForm.is_valid():
       username = MyLoginForm.cleaned_data['username']
    else:
       MyLoginForm = LoginForm()
    response = render_to_response(request, 'loggedin.html', {"username": username}, 
       context_instance = RequestContext(request))
    response.set_cookie('last_connection', datetime.datetime.now())
    response.set_cookie('username', datetime.datetime.now())
 
    return response

Come nel caso della vista sopra, la configurazione dei Cookie è effettuata tramite il metodo setcookie, non attraverso la risposta alla richiesta, oltre a notare che tutti i valori dei Cookie sono restituiti come stringhe.

Diamo vita a una FormView per il modulo di login, non mostreremo il modulo se i Cookie sono impostati e all'interno di 10 secondi -

Esempio
# Nome del file: example.py
# Copyright: 2020 Da w3codebox
# Autore: it.oldtoolbag.com
def formView(request):
    if 'username' in request.COOKIES and 'last_connection' in request.COOKIES:
       username = request.COOKIES['username']
       last_connection = request.COOKIES['last_connection']
       last_connection_time = datetime.datetime.strptime(last_connection[:-7], 
          "%Y-%m-%d %H:%M:%S")
       if (datetime.datetime.now() - last_connection_time).seconds < 10:
          return render(request, 'loggedin.html', {"username": username})
       else:
          return render(request, 'login.html', {})
 
    else:
       return render(request, 'login.html', {})

return render(request, 'login.html', {})

Puoi accedere ai cookie impostati nella vista formView, completando con l'attributo della classe Cookies della richiesta (dizionario).

Esempio
# Nome del file: example.py
# Copyright: 2020 Da w3codebox
# Autore: it.oldtoolbag.com
# Data: 2020-08-08
 from django.conf.urls import patterns, url
 from django.views.generic import TemplateView
    urlpatterns = patterns('myapp.views',
    url(r'^connection/', 'formView', name='loginform'),

url(r'^login/', 'login', name='login'))

Quando accedi a /myapp/connection, verrai reindirizzato alla seguente pagina -

Dopo la presentazione, sarai reindirizzato alla seguente interfaccia -