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

Django Cookies处理

Manchmal müssen Sie Daten des Besuchers nach den Anforderungen Ihrer Webanwendung auf jeder Seite speichern. Denken Sie immer daran, dass Cookies auf dem Client gespeichert werden und die Lebensdauer der Cookies entsprechend dem Sicherheitsniveau Ihres Browsers eingestellt werden kann. Manchmal ist dies nicht erforderlich.

Um zu veranschaulichen, wie Django mit Cookies umgeht, lassen Sie uns ein System erstellen, das die zuvor erstellte Anmeldefunktion verwendet. Das System lässt Sie für x Minuten angemeldet bleiben, und nach dieser Zeit wird die Anmeldung automatisch abgebrochen.

Für diesen Zweck müssen zwei Cookies eingerichtet werden: "last_connection" und "username".

Zunächst lassen Sie uns die Anmeldeseite ändern, um den Benutzernamen und die Cookies "last_connection" zu speichern -

# Dateiname : example.py
# Urheberrecht : 2020 Durch w3codebox
# Autor durch : de.oldtoolbag.com
# Datum : 2020-08-08
from django.template import RequestContext
 def login(request):
    username = "not logged in"
    if request.method == "POST":
       #Get the posted form
       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

As in the above view, cookies are set by calling the setcookie method, not the request response, and also note that all Cookie values are returned as strings.

Let's create a FormView for the login form, we will not display the form if the Cookie is set and10within seconds -

# Dateiname : example.py
# Urheberrecht : 2020 Durch w3codebox
# Autor durch : de.oldtoolbag.com
# Datum : 2020-08-08
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', {})

Sie können die Cookie, die Sie in der formView-Ansicht gesetzt haben, über den Attributwert COOKIES der Anfrage (Diktatur) abrufen.

Jetzt ändern Sie die Datei url.py, um die URL zu ändern, paaren Sie neue Ansichten −

# Dateiname : example.py
# Urheberrecht : 2020 Durch w3codebox
# Autor durch : de.oldtoolbag.com
# Datum : 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'))

bei dem Zugriff auf /myapp/Verbindung,treten Sie in folgende Seite ein-

nach dem Absenden wird umgeleitet zu folgender Oberfläche -

Jetzt, wenn Sie in10Sekunden /myapp/Verbindung einmal, wird direkt umgeleitet zum zweiten Bildschirm. Wenn Sie erneut zugreifen /myapp/Verbindung ausserhalb dieses Bereichs, wird der Anmeldeformular (Bildschirm1)。