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